import sys,time
sys.setrecursionlimit(200000000)
def memoize(f):
    memo = {}
    def helper(x):
        if x not in memo:            
            memo[x] = f(x)
            #print(memo)
        return memo[x]
    return helper

@memoize 
def fib(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fib(n-1) + fib(n-2)

def fiba(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fiba(n-1) + fiba(n-2)

start=time.time()
print(fib(7000))
print(time.time()-start)
print(fiba(37))
