class Solution {
private int mod = 1000000007;
public int[] waysToFillArray(int[][] queries) {
int[][] comb;
comb = combMatrix();
int[] ans = new int[queries.length];
int index = 0;
for(int[] q:queries)
{
int n=q[0];
int k=q[1];
int num = 1;
for(int i=2;i*i<k+1;i++)
{
//超赞
if(k%i == 0)
{
int y = 0;
while(k%i == 0)
{
y++;
k /= i;
}
num = (int)(((long)num*comb[n+y-1][y])%mod);
}
}
if(k>1)
num = (int)(((long)num*n)%mod);
ans[index++] = num;
}
return ans;
}
public int[][] combMatrix()
{
int nmax = 10000;
int logkmax = 13;
int[][] matrix = new int[nmax+logkmax][logkmax+1];
matrix[0][0] = 1;
for(int i=1;i<nmax+logkmax;i++)
{
matrix[i][0]=1;
for(int j=1;j<=i&&j<=logkmax;j++)
{
matrix[i][j] = matrix[i-1][j] + matrix[i-1][j-1];
if(matrix[i][j] >= mod)
matrix[i][j] %= mod;
}
}
return matrix;
}
}