#include <iostream>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <map>
#include <cmath>
#include <cstring>
#include <stack>
#include <queue>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N = 3;
vector<ll> num(N);
vector<vector<ll>> nn(3, vector<ll>(200006));
vector<ll> sum(N);
ll max(ll x, ll y){
return x > y ? x : y;
}
ll min(ll x, ll y){
return x < y ? x : y;
}
bool cmp(int x, int y){
return x > y;
}
ll lowbit(ll x){
return x & -x;
}
ll gcd(ll a, ll b){
ll r;
while (b > 0)
{
r = a % b;
a = b;
b = r;
}
return a;
}
ll lcm(ll a, ll b){
return a * b / gcd(a, b);
}
void solve(){
ll x;cin>>x;
num.resize(x);
for(int i=0;i<x;++i) num[i]=0;
int i=0;
while(x){
int y=x&1;
num[i++]=y;
x>>=1;
}
int k=0;
for(int j=0;j<i;++j){
if(num[j]==1&&num[j+1]==1){
num[j]=-1;
num[j+1]=0;
num[j+2]++;
}
else if(num[j]==2){
num[j] = 0;
num[j + 1]++;
}
}
for(int j=0;j<i+1;++j){
if (num[j] != 0)
k = j + 1;
}
cout<<k<<'\n';
for(int j=0;j<k;++j) cout<<num[j]<<' ';
cout<<'\n';
return;
}
int main(){
int t;
cin >> t;
while (t--)
solve();
return 0;
}