#include<cstdio>

using namespace std;

int syutu[30];

void saiki(int m,int n,int atnum){
	
	int flg=0;
	//printf("%d %d %d\n",m,n,atnum);
	
	for(int i=n;i>0;i--){
		if(i>m){
			continue;
		}
		
		syutu[atnum]=i;
		saiki(i,n-i,atnum+1);
		syutu[atnum]=-1;
		flg=1;
	}
	
	if(flg==0){
		printf("%d",syutu[0]);
		for(int i=1;i<30;i++){
			if(syutu[i]==-1){
				break;
			}
			printf(" %d",syutu[i]);
		}
		puts("");
	}
}

int main(){
	
	while(1){
		int n;
		scanf("%d",&n);
		
		if(n==0){
			return 0;
		}
		
		for(int i=0;i<30;i++){
			syutu[i]=-1;
		}
		saiki(n,n,0);
	}
}