#include using namespace std; using ll = long long; #define all(A) A.begin(),A.end() using vll = vector; #define rep(i, n) for (long long i = 0; i < (long long)(n); i++) using Graph = vector>; ll mod = 1e9 + 7; ll inv(ll N) { ll a = N, b = mod, c = 1, d = 0; while (b > 0) { ll t = a / b; a -= t * b; swap(a, b); c -= t * d; swap(c, d); } c %= mod; if (c < 0)c += mod; return c; } int main() { ll N,K; cin>>N>>K; ll an=1; for(ll i=2;i*i<=N;i++){ if(N%i==0){ ll k=0; while(N%i==0){ k++; N/=i; } rep(p,k){ an*=((K+k-p)%mod); an%=mod; an*=inv(p+1); an%=mod; } } } if(N!=1){ an*=((K+1)%mod); an%=mod; } cout<