#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include //#include //using Modint = atcoder::modint998244353; using namespace std; typedef long long ll; void ex_gcd(ll a, ll b, ll &d, ll &x, ll &y) { if (!b) { d = a; x = 1; y = 0; } else { ex_gcd(b, a % b, d, y, x); y -= a / b * x; } } ll inv(ll a, ll n) { ll d, x, y; ex_gcd(a, n, d, x, y); return d == 1 ? (x % n + n) % (n / d) : -1; } ll gcd(ll x, ll y) { if (y == 0) return x; return gcd(y, x % y); } int gcd(int x, int y) { if (y == 0) return x; return gcd(y, x % y); } inline bool scan_d(int &ret) { char c; int sgn; if(c=getchar(),c==EOF) return 0; //EOF while(c!='-'&&(c<'0'||c>'9')) c=getchar(); sgn=(c=='-')?-1:1; ret=(c=='-')?0:(c-'0'); while(c=getchar(),c>='0'&&c<='9') ret=ret*10+(c-'0'); ret*=sgn; return 1; } const int maxn = 85; const int mod = 1000000007; ll ans[maxn]; bool vis[maxn]; void dfs(int idx, int cur, int n) { if(idx==n){ ans[n]++; return; } int r = cur + idx; if(r>n)r-=n; if(!vis[r]){ vis[r] = 1; dfs(idx+1, r, n); vis[r] = 0; } int l = cur - idx; if(l<=0)l = n + l; if(!vis[l]){ vis[l] = 1; dfs(idx+1, l, n); vis[l] = 0; } } int tbl[80] = {1, 2, 2, 4, 2, 4, 4, 8, 2, 4, 6, 8, 2, 8, 6, 16, 2, 4, 6, 8, 4, 12, 6, 16, 4, 4, 4, 16, 2, 12, 10, 32, 4, 4, 8, 8, 2, 12, 6, 16, 2, 8, 6, 24, 6, 12, 8, 32, 6, 8, 6, 8, 2, 8, 10, 32, 4, 4, 6, 24, 2, 20, 6, 64, 6, 8, 8, 8, 4, 16, 6, 16, 2, 4, 8, 24, 14, 12, 6, 32}; int main() { #ifdef suiyuan2009 freopen("/Users/suiyuan2009/CLionProjects/icpc/input.cpp", "r", stdin); freopen("/Users/suiyuan2009/CLionProjects/icpc/output.cpp", "w", stdout); #endif /*for(int i=1;i<=80;i++){ vis[1] = 1; dfs(1, 1, i); cout<>T; while(T--){ int x; cin>>x; cout<