#include <iostream>
#include <map>
using namespace std;

map<int, int> mp;
long dp[100010][35];
int main() {
	int N, M; cin >> N >> M;
	long ans=1, mod=1000000007;
	dp[0][0]=1;
	for(int i=0; i<N; ++i){
	    for(int f=0; f<35; ++f){
	        for(int t=f; t<35; ++t){
	            dp[i+1][t]=(dp[i+1][t]+dp[i][f])%mod;
	        }
	    }
	}
	for(int i=2; i*i<=M; ++i){
	    while(M%i==0){
	        ++mp[i];
	        M /= i;
	    }
	}
	if(M>1) mp[M]=1;
	for(auto itr=mp.begin(); itr!=mp.end(); ++itr){
	    ans=(ans*dp[N][itr->second])%mod;
	}
	cout << ans << endl;
	return 0;
}
