#include using namespace std; // why am I so weak const int MOD = 663224321; int res[100055]; int fact[100055], inv[100055]; int mod_pow(int n, long long k) { if (k == 0) return 1; int res = mod_pow(n, k >> 1); res = (1ll * res * res) % MOD; if (k & 1) res = (1ll * res * n) % MOD; return res; } int ncr(int n, int k) { if (k > n) return 0; return 1ll * fact[n] * inv[k] % MOD * inv[n - k] % MOD; } long long extgcd(long long a,long long b,long long &x,long long &y) { long long d=a; if (b!=0LL) { d=extgcd(b,a%b,y,x); y-=(a/b)*x; } else x=1,y=1; return d; } long long mod_inverse(long long a,long long m) { long long x,y; extgcd(a,m,x,y); return (m+x%m)%m; } int main() { fact[0] = 1ll; for (int i = 1; i <= (int)1e5; i++) { fact[i] = (1ll * i * fact[i - 1]) % MOD; } for (int i = 0; i <= (int)1e5; i++) { inv[i] = mod_inverse(fact[i], MOD); } res[1] = res[2] = 1; for (int i = 2; i <= 1e3; i++) { res[i] = mod_pow(2, 1ll * i * (i - 1) / 2); int roll = 0; for (int j = 1; j < i; j++) { roll = (1ll * roll + 1ll * j % MOD * ncr(i, j) % MOD * mod_pow(2, 1ll * (i - j) * (i - j - 1) / 2) % MOD * res[j]) % MOD; } roll = (roll * mod_inverse(i, MOD)) % MOD; res[i] = (res[i] - roll + MOD) % MOD; } int q, n; cin >> q; while (q--) { scanf("%d", &n); printf("%d\n", res[n]); } return 0; }