import Data.List

base = 10^9+7 :: Integer

mulmod a b = (a * b) `mod` base

powmod a n = f 1 n a
  where
    f r 0 _ = r
    f r n t = f (if odd n then mulmod r t else r) (div n 2) (mulmod t t)

invmod a = powmod a (base - 2)

combmod n k = let k' = min k (n-k) in mulmod (foldl mulmod 1 [n-k'+1..n]) (foldl mulmod 1 $ map invmod [1..k'])

combwrmod n k = combmod (n+k-1) k

factor n = f n (2:[3,5..])
  where
    f 1 _ = []
    f n pa@(p:ps)
     | r==0 = p : f q pa
     | n<p*p = [n]
     | otherwise = f n ps
      where
        (q, r) = divMod n p

main = map read . words <$> getLine >>= \[n, m] -> print $ foldl mulmod 1 $ map (combwrmod n . genericLength) $ group $ factor m 