#include <bits/stdc++.h>
#define ll long long
using namespace std;

const int MAX = 510000;
const int MOD = 1000000007;

long long fac[MAX], finv[MAX], inv[MAX];

// テーブルを作る前処理
void COMinit() {
    fac[0]=fac[1]=1;
    finv[0]=finv[1]=1;
    inv[1]=1;
    for(int i=2;i<MAX;i++){
        fac[i]=fac[i-1]*i%MOD;
        inv[i]=MOD-inv[MOD%i]*(MOD/i)%MOD;
        finv[i]=finv[i-1]*inv[i]%MOD;
    }
}

// 二項係数計算
long long COM(int n,int k){
    if(n<k) return 0;
    if(n<0||k<0) return 0;
    return fac[n]*(finv[k]*finv[n-k]%MOD)%MOD;
}

int main(){
  COMinit();
  ll n,m,ans=1;
  ll mod=1e9+7;
  cin>>n>>m;
  for(int i=2;i*i<=m;i++){
    if(m%i==0){
      int x=0;
      while(m%i==0){
        m/=i;
        x++;
      }
      ans*=COM(x+n-1,x);
      ans%=mod;
    }
  }
  if(m>1){
    ans*=n;
    ans%=mod;
  }
  cout<<ans<<endl;
}