문제출처 : https://www.acmicpc.net/submit/16974/33676179
n, x = map(int,input().split())
burger = [1] *(n+1)
patty = [1]*(n+1)
for i in range(1,n+1):
burger[i] = 1+burger[i-1]+1+burger[i-1]+1 # burger[i] = B + burger[n-1] + P + burger[n-1] + B
patty[i] = patty[i-1] + 1 + patty[i-1] # patty[i] = patty[n-1] + P + patty[n-1]
# burger, patty 초기화 해주기
def solve(n, x):
if n == 0:
if x == 0:
return 0
elif x == 1:
return 1
elif x == 1:
return 0
# 기저 조건 설정
elif x <= 1+burger[n-1]: # case 1
return solve(n-1,x-1)
elif x == 1+burger[n-1]+1: # case 2
return patty[n-1] + 1
elif x <= 1+burger[n-1] + 1 + burger[n-1]: # case 3
return patty[n-1] + 1 + solve(n-1, x - (1+burger[n-1]+1))
else: # case 4
return patty[n]
print(solve(n,x))