#include<bits/stdc++.h>
using namespace std;
int n,ans[10005],cd;
bool yx;
void iddfs(int c,int mc)
{
if(!yx)return;
if(c==mc)
{
for(int i=c-1;i>=1;i--)
{
for(int j=c-1;j>=1;j--)
{
if(ans[i]+ans[j]==n&&ans[i]+ans[j]>ans[c-1])
{
ans[c]=n;
yx=0;
return;
}
if(ans[i]+ans[j]<=ans[c-1])break;
}
}
return;
}
for(int i=c-1;i>=1&&yx;i--)
{
for(int j=i;j>=1&&yx;j--)
{
if(ans[i]+ans[j]<=n)
{
int sum=ans[i]+ans[j];
for (int k=c+1;k<=mc;k++)sum*=2;
if(sum<n)continue;
ans[c]=ans[i]+ans[j];
iddfs(c+1,mc);
}
}
}
}
int main ( )
{
ios::sync_with_stdio(false);
while(cin>>n)
{
yx=1;
if(n==0)return 0;
else if(n==1)cout<<"1\n";
else
{
ans[1]=1;
for(cd=log2(n)+0.999999999999999999;yx;cd++)iddfs(2,cd);
for(int j=1;j<cd;j++)cout<<ans[j]<<" ";
cout<<"\n";
}
}
}