n = int(input())
st = [0] * (n + 1) # 数字是否被用过
path = [0] * (n + 1) # 保存序列
def dfs(u):
if u > n:
for i in range(1, n + 1):
print(path[i], end=' ')
print()
return
for i in range(1, n + 1):
if not st[i]:
path[u] = i
st[i] = 1 # 数字被用,修改状态
dfs(u + 1) # 填下一个位
st[i] = 0 #回溯,取出 i
dfs(1)