#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
const int N=38, MSK=(1<<(N/2));
int g[N+1][N+1], mx[MSK], hlp[N/2], dp[N/2+1][MSK], bad1[MSK];
bool good0[MSK], good1[MSK];
void pre() {
for(int i=0; i<=N; i++) {
for(int q=0; q<=N; q++) {
if(i>q)
g[i][q]=g[q][i];
else {
if(i==0)
g[i][q]=q;
else
g[i][q]=g[q%i][i];
}
}
}
good1[0]=1, bad1[0]=0;
for(int m=1; m<MSK; m++) {
int cnt=0;
while((1<<(cnt+1))<=m)
cnt++;
mx[m]=cnt;
}
for(int i=0; i<N/2; i++) {
int nw=2*i+1;
good1[1<<i]=1;
for(int m=1; m<(1<<i); m++) {
int nm=m|(1<<i), b1=mx[m];
good1[nm]=good1[m]&&good1[nm^(1<<b1)]&&(m&(1<<(g[2*b1+1][nw]/2)))!=0;
}
for(int q=0; q<N/2; q++) {
hlp[q]=0;
for(int j=0; j<N/2; j++) {
if(g[nw][2*j+2]==2*q+1)
hlp[q]|=(1<<j);
}
}
for(int m=(1<<i)-2; m>=0; m--) {
int nm=m|(1<<i), b1=mx[((1<<i)-1)^m];
bad1[nm]=bad1[nm^(1<<b1)]|hlp[b1];
}
for(int m=0; m<(1<<i); m++) {
int nm=m|(1<<i);
bad1[nm]|=bad1[m];
}
}
good0[0]=1;
for(int i=0; i<N/2; i++) {
int nw=2*i+2;
good0[1<<i]=1;
for(int m=1; m<(1<<i); m++) {
int nm=m|(1<<i), b1=mx[m];
good0[nm]=good0[m]&&good0[nm^(1<<b1)]&&(m&(1<<(g[2*b1+2][nw]/2-1)))!=0;
}
}
for(int m=0; m<(1<<(N/2)); m++)
dp[0][m]=good0[m];
for(int i=1; i<=N/2; i++) {
for(int m=0; m<(1<<(N/2)); m++) {
dp[i][m]=dp[i-1][m];
if((m&(1<<(i-1)))!=0)
dp[i][m]+=dp[i-1][m^(1<<(i-1))];
}
}
}
void slv(int k) {
int all=0, ans0=0, ans1=0;
for(int i=N/2-1; i>=0; i--) {
int cnt[2][2]={ }, do0=ans0|(1<<i), do1=ans1|(1<<i);
for(int add=0; add<(1<<i); add++) {
if(good1[ans0|add]&&(bad1[ans0|add]&ans1)==0)
cnt[0][0]+=dp[i][ans1|(((1<<i)-1)&~bad1[ans0|add])];
if(good1[do0|add]&&(bad1[do0|add]&ans1)==0)
cnt[0][1]+=dp[i][ans1|(((1<<i)-1)&~bad1[do0|add])];
if(good1[ans0|add]&&(bad1[ans0|add]&do1)==0)
cnt[1][0]+=dp[i][do1|(((1<<i)-1)&~bad1[ans0|add])];
if(good1[do0|add]&&(bad1[do0|add]&do1)==0)
cnt[1][1]+=dp[i][do1|(((1<<i)-1)&~bad1[do0|add])];
}
if(k<cnt[0][0])
continue;
k-=cnt[0][0];
if(k<cnt[0][1]) {
ans0=do0;
all++;
continue;
}
k-=cnt[0][1];
if(k<cnt[1][0]) {
ans1=do1;
all++;
continue;
}
k-=cnt[1][0];
ans1=do1, ans0=do0;
all+=2;
}
cout << all << " ";
for(int i=0; i<N/2; i++) {
if((ans0&(1<<i))!=0)
cout << 2*i+1 << " ";
if((ans1&(1<<i))!=0)
cout << 2*i+2 << " ";
}
cout << endl;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
pre();
int t;
cin >> t;
while(t--) {
int k;
cin >> k;
slv(k);
}
return 0;
}