
#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;
}