#include<cstdio>
#include<string>
#include<vector>
#include<sstream>
#include<deque>
#include<algorithm>

using namespace std;

#define rep(i,n) for(int i=0;i<n;i++)
#define reps(i,n) for(int i=1;i<=n;i++)

deque<int> ans;

void saiki(int maxi,int amari){
	if(amari==0){
		rep(i,ans.size()){
			printf("%d",ans[i]);
			if(i+1>=ans.size()){
				break;
			}
			printf(" ");
		}puts("");
	}
	for(int i=min(maxi,amari);i>0;i--){
		ans.push_back(i);
		saiki(i,amari-i);
		ans.pop_back();
	}
}

int main(){
	while(1){
		int n;
		scanf("%d",&n);
		if(n==0)break;
		ans.clear();
		saiki(n,n);
	}
}