함수 → 2^n * 2^n 배열에서 (r, c)를 방문하는 순서를 반환하는 함수
base condition → n == 0: return 0
재귀 식
(r, c)가 몇 사분면에 있는지가 중요!
1사분면인 경우 return func(n-1, r, c)
2사분면인 경우 return 2^(n-1) * 2^(n-1) + func(n-, r, c - 2^(n-1))
3사분면인 경우 return 2(2^(n-1) 2^(n-1)) + func(n-, r - 2^(n-1), c)
4사분면인 경우 return 3(2^(n-1) 2^(n-1)) + func(n-, r - 2^(n-1), c - 2^(n-1))
import sys
def zigzag(n, r, c):
if n == 0:
return 0
half = 1 << (n-1)
if r < half and c < half:
return zigzag(n-1, r, c)
if r < half and c >= half:
return half*half + zigzag(n-1, r, c - half)
if r >= half and c < half:
return 2*half*half + zigzag(n-1, r - half, c)
return 3*half*half + zigzag(n-1, r - half, c - half)
n, r, c = map(int, sys.stdin.readline().split(' '))
print(zigzag(n, r, c))