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 JavaScript (node.js v5.12) (judge verdict: Wrong Answer)

var lines = [];
var readline = require('readline');

var rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});

rl.on('line', function (x) {
    lines.push(x);
});

rl.on('close', function () {
    var N = Number(lines[0].split(" ")[0]);
    var M = Number(lines[0].split(" ")[1]);
    var len = 1; var cnt = 1;

    var len = Math.ceil(Math.sqrt(M));
    //console.log(len)
    for (var i = 2; i <= len; i++) {
        if (M % i === 0) { M = M / i; cnt++; i--; }
    }

    // 12 = 1,2,2,3
    //console.log(c(cnt - 1, N - 1), factorial(N));
    console.log(c(cnt - 1, N - 1) * factorial(N));
});

function c(n, k) {
    return (p(n, k) / p(k, k));
}
function p(n, k) {
    var result = 1;

    for (var i = n; k < i; i--) { result *= n; }
    return (result);
}

function factorial(n) {
    var result = 1;
    for (var i = n; 0 < i; i--) {
        result *= i;
    }
    return (result);
}