N,K=map(int,input().split()) stack=[(N,K,0),(N,K,1)] memo={} ans=[] while(stack): n,k,d=stack.pop() if d==1: if (n,k) in memo: ans.append(memo[(n,k)]) elif k==0: memo[(n,k)]=0 ans.append(0) elif n==0: memo[(n,k)]=1 ans.append(1) else: stack.append((n-1,k,0)) stack.append((n-1,k,1)) stack.append((n-1,k//n,0)) stack.append((n-1,k//n,1)) else: if (n,k) in memo: pass else: ans.append(ans.pop()+ans.pop()) memo[(n,k)]=ans[-1] print(memo[(n,k)]-1)