import java.util.*;
public class Main{
static int n;
static String s="";//不赋值就是null124567;
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
dfs(1);
}
static void dfs(int x){
if(x>n) {System.out.println(s); return;}
String p=s; //dfs会改变现有状态
dfs(x+1);//不选
s=p;
s+=String.valueOf(x)+" "; //选 空格间隔
dfs(x+1);
//s=p; 最后可以不剪枝,因为前面把所有状态搜完了,所有解都有了
//恢复现场是因为这个位上还有其他方案,
}
}