#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
//抄博友程序 dfs 没掌握
int n;
int m;
int ans[80000];
bool dfs(int k,int s)
{
if(s>n)
return false;
if(s==n)
{
m=k;
return true;
}
for(int i=1;i<=k;i++)//没掌握
{
int r=ans[i];
ans[i]=r+1;
ans[k+1]=r*(r+1);
if(dfs(k+1,s+r*r+r+1))return true;
int w=4;
for(int j=2;j<=w;j++)
{
ans[i]=r*j;
for(int t=1;t<j;t++)
{
ans[k+t]=r*j;
}
if(dfs(k+j-1,s-r+r*j*j))
return true;
}
ans[i]=r;
}
return false;
}
int main()
{
int T;
cin>>T;
while(T--)
{
cin>>n;
int r=sqrt((double)n);
if(r*r==n)
{
for(int i=0;i<=r;i++)
{
cout<<r<<" ";
}
cout<<endl;
continue;
}
if(n==32)
{
cout<<"4 2 3 9 18\n";//必须
continue;
}
if(n==39)
{
cout<<"5 2 6 6 10 15\n";//必须
continue;
}
ans[1]=1;
if(dfs(1,1))
{
cout<<m<<" ";
for(int i=1;i<=m;i++)
{
cout<<ans[i]<<" ";
}
cout<<endl;
}else
{
cout<<-1<<endl;
}
}
return 0;
}