#define _CRT_SECURE_NO_WARNINGS #define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING #include using namespace std; typedef long long mat[6][6]; const int mod = 123456789; const size_t sz = sizeof(long long) * 36; void mul(mat a, mat b) { mat c; memset(c, 0, sz); for (int i = 0; i < 6; i++) for (int j = 0; j < 6; j++) for (int k = 0; k < 6; k++) c[i][j] = (c[i][j] + a[i][k] * b[k][j]) % mod; memcpy(a, c, sz); } void fpow(mat ret, mat a, long long b) { memset(ret, 0, sz); for (int i = 0; i < 6; i++) ret[i][i] = 1; for (; b; b >>= 1, mul(a, a)) if (b & 1) mul(ret, a); } int main() { int T; long long n; scanf("%d", &T); while (T--) { scanf("%lld", &n); if (n <= 2) printf("%lld\n", n); else { mat b = { {1, 0, 0, 0, 0, 0}, {2, 0, 0, 0, 0, 0}, {8, 0, 0, 0, 0, 0}, {4, 0, 0, 0, 0, 0}, {2, 0, 0, 0, 0, 0}, {1, 0, 0, 0, 0, 0}}; mat a = { {0, 1, 0, 0, 0, 0}, {2, 1, 1, 3, 3, 1}, {0, 0, 1, 3, 3, 1}, {0, 0, 0, 1, 2, 1}, {0, 0, 0, 0, 1, 1}, {0, 0, 0, 0, 0, 1}}; mat ret; fpow(ret, a, n - 2); mul(ret, b); printf("%lld\n", ret[1][0]); } } return 0; }