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 Haskell (GHC 7.10.3) (judge verdict: Wrong Answer)


div_const::Integer
div_const = (10^9) + 7

primes :: [Int]
primes = sieve (2:[3,5..])
  where
  sieve (p:xs) = p : sieve [x | x <- xs,mod x p > 0]

facts::Int->[Int]->[Int]
facts 1 _        = []
facts n (d:divs) = let kk = length (takeWhile (\k -> mod n (d^k) == 0) [1..]) in
                   kk:(facts (div n  (d^kk)) divs)

prod_lim::[Int]->Int
prod_lim [] = 1
prod_lim (x:xs) = let xi =  toInteger x in
                  let resti = toInteger (prod_lim xs) in
                  fromIntegral (mod (xi * resti) div_const)

comb_lim::Int->Int->Int
comb_lim n k = let ni = toInteger n in
               let ki = toInteger k in
               fromIntegral (div (product [(ki+1)..ni]) (product [1..(ni-ki)]))

div_pat::Int->Int->Int
div_pat k n = comb_lim (k+(n-1)) (n-1)

solver::Int->Int->Int
solver n m = let ls = facts m primes in
             prod_lim (map (\ k -> div_pat k n) ls)

main::IO()
main=do
  d<-getLine
  let n:m:[]=map read (words d)::[Int]
  print (solver n m)