#include <bits/stdc++.h>
using namespace std;
#define pb push_back
const int N = 50005, M = 36;
int ans[M+1][N<<2];
int suf[M+1][N<<2];
int pre[M+1][N<<2];
vector<int> temp;
void build(int node, int l, int r)
{
if(l == r)
{
ans[1][node] = 1;
pre[1][node] = 1;
suf[1][node] = 1;
return;
}
int mid = (l+r)>>1;
int left = node<<1;
int right = left + 1;
build(left, l, mid);
build(right, mid+1, r);
for(int i = 1; i<M; i++)
ans[i][node] += ans[i][left] + ans[i][right];
ans[1][node]++; // whole node
for(int i = 1; i<M/2; i++)
for(int j = 1; j<M/2; j++)
ans[i+j][node] += suf[i][left]*pre[j][right];
ans[2][node]--; // whole pre and whole suf
for(int i = 1; i<M; i++)
pre[i][node] += pre[i][left];
for(int i = 1; i<M; i++)
pre[i+1][node] += pre[i][right];
pre[2][node]--;
pre[1][node]++;
for(int i = 1; i<M; i++)
suf[i][node] += suf[i][right];
for(int i = 1; i<M; i++)
suf[i+1][node] += suf[i][left];
suf[2][node]--;
suf[1][node]++;
return;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
//freopen("input10.txt", "r", stdin);
//freopen("output10.txt", "w", stdout);
int t;
cin>>t;
while(t--){
memset(ans,0,sizeof ans);
memset(pre,0,sizeof pre);
memset(suf,0,sizeof suf);
int n;
cin>>n;
build(1, 1, n);
bool flag = true;
temp.clear();
for(int i = M-1; i>0; i--)
{
if(flag)
{
if(ans[i][1] == 0)
continue;
flag = false;
temp.pb(ans[i][1]);
}
else
temp.pb(ans[i][1]);
}
cout<<temp.size()<<endl;
for(int i = temp.size() - 1; i>=0; i--)
cout<<temp[i]<<" ";
cout<<endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIHBiIHB1c2hfYmFjawoKY29uc3QgaW50IE4gPSA1MDAwNSwgTSA9IDM2OwppbnQgYW5zW00rMV1bTjw8Ml07CmludCBzdWZbTSsxXVtOPDwyXTsKaW50IHByZVtNKzFdW048PDJdOwp2ZWN0b3I8aW50PiB0ZW1wOwoKdm9pZCBidWlsZChpbnQgbm9kZSwgaW50IGwsIGludCByKQp7CiAgICBpZihsID09IHIpCiAgICB7CiAgICAgICAgYW5zWzFdW25vZGVdID0gMTsKICAgICAgICBwcmVbMV1bbm9kZV0gPSAxOwogICAgICAgIHN1ZlsxXVtub2RlXSA9IDE7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaW50IG1pZCA9IChsK3IpPj4xOwogICAgaW50IGxlZnQgPSBub2RlPDwxOwogICAgaW50IHJpZ2h0ID0gbGVmdCArIDE7CiAgICBidWlsZChsZWZ0LCBsLCBtaWQpOwogICAgYnVpbGQocmlnaHQsIG1pZCsxLCByKTsKCiAgICBmb3IoaW50IGkgPSAxOyBpPE07IGkrKykKICAgICAgICBhbnNbaV1bbm9kZV0gKz0gYW5zW2ldW2xlZnRdICsgYW5zW2ldW3JpZ2h0XTsKCiAgICBhbnNbMV1bbm9kZV0rKzsgLy8gd2hvbGUgbm9kZQoKICAgIGZvcihpbnQgaSA9IDE7IGk8TS8yOyBpKyspCiAgICAgICAgZm9yKGludCBqID0gMTsgajxNLzI7IGorKykKICAgICAgICAgICAgYW5zW2kral1bbm9kZV0gKz0gc3VmW2ldW2xlZnRdKnByZVtqXVtyaWdodF07CgogICAgYW5zWzJdW25vZGVdLS07IC8vIHdob2xlIHByZSBhbmQgd2hvbGUgc3VmCgogICAgZm9yKGludCBpID0gMTsgaTxNOyBpKyspCiAgICAgICAgcHJlW2ldW25vZGVdICs9IHByZVtpXVtsZWZ0XTsKICAgIGZvcihpbnQgaSA9IDE7IGk8TTsgaSsrKQogICAgICAgIHByZVtpKzFdW25vZGVdICs9IHByZVtpXVtyaWdodF07CiAgICBwcmVbMl1bbm9kZV0tLTsKICAgIHByZVsxXVtub2RlXSsrOwoKICAgIGZvcihpbnQgaSA9IDE7IGk8TTsgaSsrKQogICAgICAgIHN1ZltpXVtub2RlXSArPSBzdWZbaV1bcmlnaHRdOwogICAgZm9yKGludCBpID0gMTsgaTxNOyBpKyspCiAgICAgICAgc3VmW2krMV1bbm9kZV0gKz0gc3VmW2ldW2xlZnRdOwogICAgc3VmWzJdW25vZGVdLS07CiAgICBzdWZbMV1bbm9kZV0rKzsKCiAgICByZXR1cm47Cn0KCnNpZ25lZCBtYWluKCkKewoKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoMCk7CiAgICAKICAgIC8vZnJlb3BlbigiaW5wdXQxMC50eHQiLCAiciIsIHN0ZGluKTsKICAgIC8vZnJlb3Blbigib3V0cHV0MTAudHh0IiwgInciLCBzdGRvdXQpOwogICAgaW50IHQ7CiAgICBjaW4+PnQ7CiAgICB3aGlsZSh0LS0pewoKICAgICAgICBtZW1zZXQoYW5zLDAsc2l6ZW9mIGFucyk7CiAgICAgICAgbWVtc2V0KHByZSwwLHNpemVvZiBwcmUpOwogICAgICAgIG1lbXNldChzdWYsMCxzaXplb2Ygc3VmKTsKIAogICAgICAgIGludCBuOwogICAgICAgIGNpbj4+bjsKICAgICAgICBidWlsZCgxLCAxLCBuKTsKICAgICAgICBib29sIGZsYWcgPSB0cnVlOwogICAgCiAgICAgICAgdGVtcC5jbGVhcigpOwogICAgICAgIGZvcihpbnQgaSA9IE0tMTsgaT4wOyBpLS0pCiAgICAgICAgewogICAgICAgICAgICBpZihmbGFnKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZihhbnNbaV1bMV0gPT0gMCkKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIGZsYWcgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHRlbXAucGIoYW5zW2ldWzFdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB0ZW1wLnBiKGFuc1tpXVsxXSk7CiAgICAgICAgfQoKICAgICAgICBjb3V0PDx0ZW1wLnNpemUoKTw8ZW5kbDsKICAgICAgICBmb3IoaW50IGkgPSB0ZW1wLnNpemUoKSAtIDE7IGk+PTA7IGktLSkKICAgICAgICAgICAgY291dDw8dGVtcFtpXTw8IiAiOwogICAgICAgIGNvdXQ8PGVuZGw7CgogICAgfQogICAgcmV0dXJuIDA7Cn0=