Problem:
Score : 400 points

Problem Statement

You are given positive integers N and M.

How many sequences a of length N consisting of positive integers satisfy a_1 \times a_2 \times ... \times a_N = M? Find the count modulo 10^9+7.

Here, two sequences a' and a'' are considered different when there exists some i such that a_i' \neq a_i''.

Constraints

All values in input are integers.

1 \leq N \leq 10^5

1 \leq M \leq 10^9

Input

Input is given from Standard Input in the following format:

N M

Output

Print the number of the sequences consisting of positive integers that satisfy the condition, modulo 10^9 + 7.

Sample Input 1

2 6

Sample Output 1

4

Four sequences satisfy the condition: \{a_1, a_2\} = \{1, 6\}, \{2, 3\}, \{3, 2\} and \{6, 1\}.

Sample Input 2

3 12

Sample Output 2

18

Sample Input 3

100000 1000000000

Sample Output 3

957870001

Solution in C# (Mono 4.6.2.0) (judge verdict: Wrong Answer)

using System;
using System.Collections.Generic;
using System.Linq;

namespace abc110_d
{
	class Program
	{
		const int mod = 1000000007;
		static long Calc_pow(long x, long pow)
		{
			if (pow == 0) return 1;
			long a = Calc_pow(x, pow / 2);
			a = a * a % mod;
			if (pow % 2 == 1) a *= x;
			return a % mod;
		}
		static long[] fact;
		static void Init_fact(int n)
		{
			fact = new long[n]; fact[0] = 1;
			for (int i = 1; i < n; i++) fact[i] = fact[i - 1] * i % mod;
		}
		static long Combination(long n, long r)
		{
			return fact[n] * Calc_pow(fact[r] * fact[n - r] % mod, mod - 2) % mod;
		}
		static void Main(string[] args)
		{
			int[] x = Console.ReadLine().Split().Select(int.Parse).ToArray();
			List<int> primes = new List<int>();
			double sq = Math.Sqrt(x[1]);
			for (int i = 2; i < sq + 1; i++)
			{
				int a = 0;
				while (x[1] % i == 0)
				{
					x[1] /= i; a++;
				}
				if (a > 0) primes.Add(a);
			}
			long ret = 1;
			Init_fact(1000000);
			foreach (var num in primes)
			{
				ret *= Combination(x[0] + num - 1, num);
				ret %= mod;
			}
			Console.WriteLine(ret);
		}
	}
}