
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <string>
#include <vector>
#include <algorithm>
#include <map>
#include <set>
#include <queue>
#include <stack>
using namespace std;

typedef vector<int> vi;
typedef pair<int, int> pii;

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

void solve(vi& v, int n) {
	if(n == 0) {
		rep(i,v.size()) {
			printf("%d", v[i]);
			if(i < v.size()-1) printf(" ");
			else printf("\n");
		}
		return;
	}

	int l = v.size() != 0 ? v[v.size()-1] : n;
	for(int i=min(l,n); i>=1; i--) {
		int m = n - i;
		v.push_back(i);
		solve(v, m);
		v.erase(v.end()-1);
	}
}

int main() {
	int n;
	vi v;
	while(cin >> n, n) {
		solve(v, n);
	}
}