def factorization(n): arr = [] temp = n for i in range(2, int(-(-n**0.5//1))+1): if temp%i==0: cnt=0 while temp%i==0: cnt+=1 temp //= i arr.append([i, cnt]) if temp!=1: arr.append([temp, 1]) return arr def solve(K): pre = [0] * (K + 1) pre[0] = 1 Acp = [1] * (K + 2) Acp[0] = 0 for i in range(N): dp = [0] * (K + 1) Ac = [0] * (K + 2) for j in range(K + 1): dp[j] += Acp[K + 1 - j] Ac[j + 1] = Ac[j] + dp[j] dp[j] %= mod Ac[j + 1] %= mod dp, pre = pre, dp Ac, Acp = Acp, Ac return sum(pre) % mod N, M = map(int, input().split()) mod = 10 ** 9 + 7 ans = 1 for p, m in factorization(M): ans *= solve(m) ans %= mod print(ans)