# 相当于在长度为n的格子上填空,先从第0个位置开始
# 对于每个位置都有填或者不填两个选项,对于不填
# 其状态数组是0,对于填其状态数组是1.
def dfs(u):
if u == n:
for i in range(n):
if st[i] == 1:
# 因为同一行内的数必须升序排序,所以我们在输出时
# 只需要在状态数组为1的位置开始开始输出。
print(i + 1, end =' ')
print()
return
dfs(u+1) #当前位置不填
st[u] = 0
st[u] = 1 #当前位置填
dfs(u+1)
st[u] = 0
n = int(input())
st = [0] * (n)
dfs(0)