# 9003
def f(x, y):
if x == y:
return 1
if x < y:
return 0
return f(x-1, y) + f(x//2, y)
print(f(50, 16) * f(16, 5))
# 8833
def f(x, y):
if x == y:
return 1
if x > y or x == 28 or x == 36:
return 0
return f(x+1, y) + f(x+5, y) + f(x*3, y)
a = f(2, 18) * f(18, 49)
b = f(2, 30) * f(30, 49)
c = f(2, 18) * f(18, 30) * f(30, 49)
print(a + b - c)
# 8684
def f(x, y):
if x == y:
return 1
#if x < y or x == 48:
# return 0
if x < y or x == 61:
return 0
return f(x-1, y) + f(x//2, y) + f(x//3, y)
print(f(106, 61) * f(61, 6))
print(f(106, 48) * f(48, 6))
print(575+3553)