n = int(input())
b = [False] * (n + 1) # 下标 1~n,所以长度 n+1 更方便
path = []
def dfs():
if len(path) == n:
print(' '.join(map(str, path)))
return
for i in range(1, n + 1):
if not b[i]:
b[i] = True # 即这个深度放 刚访问的i
path.append(i)
dfs() # 深度+1,当深度到给出的长度时得到排列
path.pop()
b[i] = False # 再把刚访问的i置为未访问过,下次用
dfs()



京公网安备 11010502036488号