#include using namespace std; #define FOR(i,s,t) for(int i=(s),_t=(t); i<=_t; ++i) #define DOR(i,s,t) for(int i=(s),_t=(t); i>=_t; --i) #define EOR(i,x) for(int i=Head[x]; ~i; i=Nxt[i]) typedef double db; typedef long long ll; const int N=85; int ans[]={0,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 a[N]; int n; int dfs(int x,int d) { if(d==n) return 1; int y=(x+d)%n; int t=0; if(!a[y]) { a[y]=1; t+=dfs(y,d+1); a[y]=0; } y=(x-d+n)%n; if(!a[y]) { a[y]=1; t+=dfs(y,d+1); a[y]=0; } return t; } void solve() { scanf("%d",&n); // a[0]=1; // dfs(0,1); printf("%d\n",ans[n]); } int main() { // freopen("1.out","w",stdout); // FOR(i,1,80) { // n=i; // a[0]=1; // dfs(0,1); // printf("%d,",dfs(0,1)); // } int T; scanf("%d",&T); while(T--) solve(); return 0; }