def dfs(i,n):
# 代表从第i个位置填到第n个位置
if i > n :
for j in range(1,n+1):
print(loca[j],end=' ')
print() # 换行
return
print('begin')
for z in range(1,n+1): #看看哪个数可以填
if sta[z] != 1:
sta[z] = 1
loca[i] = z
print('这里')
dfs(i+1, n)
print('dfs')
loca[i] = 0
sta[z] = 0
if __name__ == '__main__':
n = int(input())
sta = [0 for _ in range(n+1)] # 0代表该数未选,1代表数选了,下标从1开始
loca = [0 for _ in range(n+1)] #保存序列 从下标1开始
dfs(1,n)