#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N=16;
int n;
int arr[N];//状态 true表示选它 false表示不选它
void dfs(int u){
if(u>n){
for(int i=1;i<=n;i++){
if(arr[i]==1) printf("%d ",i);
}
printf("\n");
return;
}
arr[u]=false;
dfs(u+1);//第一个分支 不选
arr[u]=true;
dfs(u+1);//第二个分支 选
}
int main()
{
scanf("%d",&n);
dfs(1);
return 0;
}