#include <iostream>
#include <vector>
#include <list>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <bitset>
#include <algorithm>
#include <numeric>
#include <utility>
#include <sstream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <climits>
 
#define REP(i,b,n) for(int i=b;i<n;++i)
#define REPR(i,b,n) for(int i=n-1;i>=b;--i)
#define CLR(mat) memset(mat, 0, sizeof(mat))
#define NCLR(mat) memset(mat, -1, sizeof(mat))
#define EACH(i, c) for(typeof((c).begin()) i = (c).begin(); i != (c).end(); ++i)
#define EXIST(s, e) ((s).find(e) != (s).end())
#define BIT(n, b) ((n>>b) & 1)
#define PI acos(-1.0)

using namespace std;

static const double EPS = 1e-9;
typedef pair<int, int> pii;
typedef long long ll;

int main(){
		
	int wg;
	
	while(cin>>wg, !cin.eof()){
		
		queue<int> qu;
		int fundoh = 1;
		
		for(int i=0; i < 10; ++i){
		
			if( BIT(wg, i) )
				qu.push(fundoh);
				
			fundoh*=2;
		}
		
		while(!qu.empty()){
			
			cout << qu.front();
			qu.pop();
			
			if(!qu.empty())
				cout << ' ';
		}
		
		cout << endl;
	}
	
	return 0;
}