![image]()
#include<bits/stdc++.h>
using namespace std;
int n,m,s,l;
#define f(i,j,k) for(register int i=j;i<=k;++i)
#define g(i,j,k) for(register int i=j;i>=k;--i)
const int mo=1e9+7;
int ksm(int x,int p){
if(p==0)return 1;
int num=ksm(x,p/2);
num=1ll*num*num%mo;
if(p&1)num=1ll*num*x%mo;
return num;
}
int C(int n,int m){
if(n<m)return 0;
int a=1,b=1;
f(i,n-m+1,n)a=1ll*a*i%mo;
f(i,1,m)b=1ll*b*i%mo;
return 1ll*a*ksm(b,mo-2)%mo;
}
int a[30];
int main(){
cin>>n>>m;
for(register int i=2;i*i<=m;++i){
for(l=0;m%i==0;m/=i)++l;
if(l)a[++s]=l;
}
if(m!=1)a[++s]=1;
l=1;
f(i,1,s)l=1ll*l*C(n+a[i]-1,n-1)%mo;
printf("%d\n",l);
return 0;
}