import sys MOD = 10**9 + 7 def factorize(m): factors = {} i = 2 while i*i <= m: if m % i == 0: cnt = 0 while m % i == 0: cnt += 1 m //= i factors[i] = cnt i += 1 if m > 1: factors[m] = 1 return factors def compute(e, n): if e == 0: return 1 prev_sum = [0] * (e + 1) for x in range(e + 1): prev_sum[x] = x + 1 for i in range(2, n + 1): new_dp = [0] * (e + 1) for b in range(e + 1): eb = e - b if eb < 0: new_dp[b] = 0 else: new_dp[b] = prev_sum[eb] % MOD curr_sum = [0] * (e + 1) curr_sum[0] = new_dp[0] for x in range(1, e + 1): curr_sum[x] = (curr_sum[x - 1] + new_dp[x]) % MOD prev_sum = curr_sum return prev_sum[e] % MOD def main(): N, M = map(int, sys.stdin.readline().split()) factors = factorize(M) result = 1 for p, e in factors.items(): res = compute(e, N) result = (result * res) % MOD print(result) if __name__ == '__main__': main()