문제

N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 N(1 ≤ N ≤ 8)이 주어진다.

출력

첫째 줄부터 N!개의 줄에 걸쳐서 모든 순열을 사전순으로 출력한다.

예제 1 입력

3

예제 1 출력

1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

예제 2 입력

4

예제 2 출력

1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 2 3
1 4 3 2
2 1 3 4
2 1 4 3
2 3 1 4
2 3 4 1
2 4 1 3
2 4 3 1
3 1 2 4
3 1 4 2
3 2 1 4
3 2 4 1
3 4 1 2
3 4 2 1
4 1 2 3
4 1 3 2
4 2 1 3
4 2 3 1
4 3 1 2
4 3 2 1

Source

n = int(input())
li = [0 for _ in range(n + 1)]
visited = [0 for _ in range(n + 1)]

def dfs(k, li, visited):
	global n

	if(k == n + 1):
		for i in range(1, n + 1):
			print(li[i], end=' ')
		print('\n', end='')
		return
	for i in range(1, n + 1):
		if(visited[i] == 1):
			continue
		li[k] = i
		visited[i] = 1
		dfs(k + 1, li, visited)
		li[k] = 0
		visited[i] = 0

dfs(1, li, visited)