import sys
sys.stdin = open("input.txt", "r")
def DFS(x):
		if x>0:
			# print(x)        # 3 2 1
			DFS(x-1)
			print(x, end=' ') # 1 2 3
if __name__== "__main__":
		n = int(input())
		DFS(n


순서대로 1, D(1), D(2), D(3) 복귀 >> 위에서 부터 하나씩 pop 됨 D(1) 의 복귀주소 > D(2) > D(3) , So output = 1 2 3
import sys
sys.stdin = open("input.txt", "r")
def DFS(x):                 # x = 11    D(11)    D(5)    D(2)    D(1)    D(0)
		if x == 0:
			 return # 함수를 종료                                                THE END 
		else:                  
			 print(x%2, end=' ') # 1                     1      0       1
			 DFS(x//2)           # 5          D(5)     D(2)    D(1)    D(0)
if __name__ == "__main__":
		n = int(input())
		DFS(n)
________________________________________________________________________________
def DFS(x):                 # x = 11    D(1)    D(5)    D(2)    D(1)    D(0)
		if x == 0:
			 return # 함수를 종료                                                THE END 
		else:                  
			 DFS(x//2)           # 5          D(1)     D(2)    D(1)    D(0)
			 print(x%2, end=' ') # 1            0        1      1
if __name__ == "__main__":
		n = int(input())
		DFS(n)





전위: 부 왼 오 | 중위 : 왼 부 오 | 후위: 왼 오 부



import sys
sys.stdin = open("input.txt", "r")
def DFS(v):
		if v == n+1:
			 for i in range(1, n+1)
					 if ch[i] == 1:
							print(i, end=' ')
					 print()
		else: 
			ch[v] = 1
			DFS(v+1)
			ch[v] = 0
			DFS(v+1)
if __name__ == "__main__":
		n = int(input())
		ch = [0] * (n+1)
		DFS(1)

합이 같은 부분집합 (DFS)
sum == total - sum
