#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
#define ll long long
ll n,a[40],s[40],p;
bool v[40]={0},flag=false;
ll out(ll x){
for(ll i=1;i<=x;i++) printf("%lld ",a[i]);
exit(0);
}
void dfs(ll k,ll t){
if(k==0){
flag=true;
out(t-1);
exit(0);
}
for(ll i=p;i>=1;i--){
if(!v[i]){
a[t]=s[i];
v[i]=1;
dfs(k-s[i],t+1);
v[i]=0;
}
}
}
int main(){
//freopen("power.in","r",stdin);freopen("power.out","w",stdout);
scanf("%lld",&n);
s[0]=1;
for(ll i=1;i<=32;i++) s[i]=s[i-1]*2;
if(n%2){
printf("-1");
return 0;
}
for(ll i=32;i>=1;i--){
if(s[i]>n) continue;
if(s[i]==n){
printf("%lld\n",s[i]);
return 0;
}
else {
p=i;
break;
}
}
dfs(n,1);
if(!flag) printf("-1\n");
return 0;
}