#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

const long long MOD = (long long)1e9 + 7;

long long kai[200001] = {0};

long long modpow(long long x, long long y){
	if(y == 0) return 1;
	if(y % 2 == 0){
		long long t = modpow(x, y / 2);
		return t * t % MOD;
	}else{
		long long t = modpow(x, (y - 1) / 2);
		return x * (t * t % MOD) % MOD;
	}
}

long long comb(long long x, long long y){
	y = min(x - y, y);
	long long resmul = 1, resdiv = 1;
	for(int i = 0; i < y; i++){
		resmul = resmul * (x - i) % MOD;
		resdiv = resdiv * (y - i) % MOD;
	}
	return resmul * modpow(resdiv, MOD - 2) % MOD;
}

int main(){
	long long n, m, ans = 1;
	cin >> n >> m;
	long long t = m;
	for(int i = 2; i <= t; i++){
		if(t % i == 0){
			long long cnt = 0;
			while(t % i == 0){
				t /= i;
				cnt++;
			}
			ans = (ans * comb(n + cnt - 1, cnt)) % MOD;
		}
	}
	cout << ans << endl;
	return 0;
}