#include<bits/stdc++.h>
using namespace std;
//check là con sau phải lớn hơn (0) hay nhỏ hơn (1)
const int MaxN = 35;
int n;
int a[MaxN];
void backtrack(int pos, int sum,int val, int check)
{
    if(sum==n)
    {
        for (int i=1; i<=pos-1; i++)
        {
            cout << a[i] << " ";
        }
        cout << "\n";
        return ;
    }
    if(pos==1)
    {
        for (int i=1; i<=n; i++)
        {
            a[pos]=i;
            if(i==1)
            {
                backtrack(pos+1,sum+i,i,0);
            }
            else if(i==n)
            {
                backtrack(pos+1,sum+i,i,1);
            }
            else
            {
                backtrack(pos+1,sum+i,i,1);
                backtrack(pos+1,sum+i,i,0);
            }
        }
    }
    else
    {
        if(check==0)
        {
            for (long long i=val+1; i<=n-sum; i++)
            {
                a[pos]=i;
                backtrack(pos+1,sum+i,i,1);
            }
        }
        else
        {
            for (long long i=1; i<val; i++)
            {
                a[pos]=i;
                backtrack(pos+1,sum+i,i,0);
            }
        }
    }
}
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin >> n;
    backtrack(1,0,0,0);
}
