def pfact(m): pf = {} for i in range(2,int(m**0.5)+1): while m%i == 0: pf[i] = pf.get(i,0) + 1 m //= i if m>1 : pf[m]=1 return pf mod = 10**9 + 7 n,m = map(int,input().split()) #pairwiseな素因数ごとに独立 # p^nについて考えよう # 1 -> 1, p, p^2, p^3 # p -> 1, p, p^2 # p^2 -> 1, p # p^3 -> 1 ans = 1 pf = pfact(m) for num, cnt in pf.items(): dp = [[0] * (cnt+1) for i in range(n)] for j in range(cnt+1): dp[0][j] = 1 for i in range(n-1): for j in range(cnt+1): dp[i+1][cnt-j] = dp[i][j] for j in range(cnt-1,-1,-1): dp[i+1][j] += dp[i+1][j+1] dp[i+1][j] %= mod tmp = 0 for j in range(cnt+1): tmp += dp[n-1][j] tmp %= mod ans *= tmp ans %= mod print(ans)