## https://yukicoder.me/problems/no/1973 import math MOD = 10 ** 9 + 7 def solve(N, e): dp = [0] * (e + 1) dp[0] = 1 for _ in range(N): new_dp = [0] * (e + 1) for j in range(e + 1): for k in range(e + 1 - j): new_dp[k] += dp[j] new_dp[k] %= MOD dp = new_dp ans = 0 for i in range(e + 1): ans += dp[i] ans %= MOD return ans def main(): N, M = map(int, input().split()) # 素因数分解 sqrt_m = int(math.sqrt(M)) p_map = {} for p in range(2 ,sqrt_m + 1): if M % p == 0: p_map[p] = 0 while M % p == 0: p_map[p] += 1 M //= p if M > 1: p_map[M] = 1 answer = 1 for value in p_map.values(): ans = solve(N, value) answer *= ans answer %= MOD print(answer) if __name__ == "__main__": main()