#include using namespace std; #include using namespace atcoder; using ll=long long; using Graph=vector>; #define MAX 2000000 #define MOD 1000000007 #define INF 1000000000 ll modpow(ll a,ll n){ a%=MOD; ll ret=1; while(n>0){ if((n&1)==1){ ret=ret*a%MOD; } n>>=1; a=a*a%MOD; } return ret; } ll modinv(ll x){ return modpow(x,MOD-2); } int main(){ ll N,K; cin>>N>>K; map m; for(ll i=2;i*i<=N;i++){ while(N%i==0){ m[i]++; N/=i; } } if(N>1){ m[N]++; } ll ans=1; for(auto p:m){ ll sum=0; ll x=1; sum+=1; for(int i=1;i<=p.second;i++){ x*=(K-1+(ll)i)%MOD; x%=MOD; x*=modinv((ll)i); x%=MOD; sum+=x; sum%=MOD; } ans*=sum; ans%=MOD; } cout<