#include<iostream>
using namespace std;
int n,len,adChains[10001];
bool dfs(long long k){
if(k == len){
if(adChains[k] == n){
for(int i = 1;i <= k;i++){
cout << adChains[i] << " ";
}
cout << endl;
return true;
}
return false;
}
for(int i = k - 1;i >= 1;i--){
for(int j = k - 1;j >= i;j--){
adChains[k] = adChains[i] + adChains[j];
if(dfs(k + 1)){
return true;
}
}
}
return false;
}
int main(){
cin >> n;
while(n != 0){
adChains[1] = 1;
if(n == 1){
cout << 1 << endl;
}
for(len = 2;len <= n;len++){
if(dfs(1)){
break;
}
}
cin >> n;
}
return 0;
}