#include <iostream>
#include <vector>
using namespace std;
int n;
vector<int> closen; //! 被选择的数
void dfs(int u)
{
if(u == n + 1)
{
for(int i = 0; i < closen.size(); i++)
{
if(i > 0) printf(" ");
printf("%d", closen[i]);
}
puts("");
return;
}
//! 选择的分支
closen.push_back(u);
dfs(u + 1);
closen.pop_back();
//! 不选的分支
dfs(u + 1);
}
int main(void)
{
scanf("%d", &n);
dfs(1);
return 0;
}