import time,sys #T(a, 0) = 1 #T(0, b) = T(1, b-1) #T(24, b) = T(23, b) #T(a, b) = T(a-1, b-1) + T(a+1, b-1) def T(a, b): if b==1 or b==0: return 1 if a==0: return T(1, b-1) if a==25: return T(24, b-1) return T(a-1, b-1) + T(a+1, b-1) #counter=0 def triv(n): #global counter #counter+=1 if n==0:return 1 else:return triv(n-1)+triv(n-1) def memoizate(f): class F: def __init__(self, f): self.f=f self.m={} def call(self, *args): #print args targs=tuple(args) #print targs try: return self.m[targs] except: res=self.f(*args) self.m[targs]=res return res _f=F(f) return lambda *a:_f.call(*a) sys.setrecursionlimit(20000) T=memoizate(T) def get_uohg(a): return sum([T(i, a) for i in range(25)]) for arg in sys.argv: try: uohg = get_uohg(int(arg)) print arg, uohg except: pass