# printPowerSet 함수가 멱집합을 계산하면서 출력
def printPowerSet(set,set_size):
  
  pow_set_size =  1 << set_size    # 2^{set_size}로 멱집합 크기 정의 및 초기화
  counter = 0
  j = 0
  print("P({", end = "")
  for i in range(0, set_size):
    if i == set_size - 1:
      print(i + 1, end = "")
    else:
      print(i + 1, end = ", ")
  print("}) = { \u2205", end = " ")

  for counter in range(1, pow_set_size):
    print(", { ", end = "")
    for j in range(0, set_size):
      if (counter & (1 << j)) > 0:
        print(set[j], end = ",")
    print("\b }", end = "")
  print("}")

# 사용자로부터 집합의 크기가 될 자연수를 입력받음
n = int(input("자연수 n을 입력하라.: "))
set = []    # 집합이 저장될 빈 배열 정의

print()

# set 배열을 1부터 n까지의 자연수들로 초기화
for i in range(0, n):
  set.append(str(i + 1)) 

printPowerSet(set, n)
print()
