/*AMETHYSTS*/ #pragma comment(linker, "/STACK:1000000000") #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define ll long long #define ld long double #define pii pair #define mp make_pair using namespace std; const int maxn = (int)1e2 + 10; const ll mod = (ll)1e9 + 7; const ll inf = (ll)1e18 + 7; vector > e; int q, n, color[maxn]; vector > v(maxn); void dfs(int ver) { color[ver] = 1; for (int i = 0; i < v[ver].size(); i++) { if (!color[v[ver][i]]) { dfs(v[ver][i]); } } return; } int main() { cin >> q; for (int j = 0; j < q; j++) { cin >> n; e.clear(); for (int i = 1; i <= n; i++) { for (int z = i + 1; z <= n; z++) { e.push_back(mp(i, z)); } } ll ans = 0; for (ll msk = 1; msk < ((ll)1 << (ll)(e.size())); msk++) { for (int i = 0; i <= n; i++) { v[i].clear(); color[i] = 0; } for (int i = 0; i < e.size(); i++) { if (msk & ((ll)1 << (ll)i)) { v[e[i].first].push_back(e[i].second); v[e[i].second].push_back(e[i].first); } } dfs(1); bool was = false; for (int i = 1; i <= n; i++) { if (!color[i]) { was = true; break; } } if (!was) { ans++; } } cout << ans % 663224321 << endl; } return 0; }