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 Ruby (2.3.3) (judge verdict: Wrong Answer)

def comb_init(max, mod)
  fac = Array.new(max)
  finv = Array.new(max)
  inv = Array.new(max)
  fac[0] = fac[1] = 1
  finv[0] = finv[1] = 1
  inv[1] = 1;
  (2...max).each do |i|
    fac[i] = fac[i - 1] * i % mod
    inv[i] = mod - inv[MOD % i] * (MOD / i) % mod
    finv[i] = finv[i - 1] * inv[i] % mod
  end
  { fac: fac, finv: finv }
end

def comb(n, k, mod, context)
  return 0 if n < k
  return 0 if n < 0 || k < 0
  fac = context[:fac]; finv = context[:finv]
  fac[n] * (finv[k] * finv[n - k] % mod) % mod
end

require 'prime'
N, M = gets.split.map(&:to_i)
MOD = 1000000007
comb_context = comb_init(210000, MOD)
ans = M.prime_division.map do |_, e|
  n = e + N - 1
  k = N - 1
  comb(n, k, MOD, comb_context)
end.reduce { |acc, n| acc * n % MOD }
puts ans