#include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; const ll modc=1e9+7, MAX=1000000; vector f, finv; ll inv(ll x){ ll ans = 1, e = modc-2; x %= modc; while (e > 0){ if ((e & 1LL)) ans = (ans * x) % modc; e = e >> 1LL; x = (x*x) % modc; } return ans; } ll C(ll n, ll k){ ll ans=1; n %= modc; for(ll i = 0; i prime; void prime_factor(ll n){ ll m = n; if (n % 2 == 0){ while(n % 2 == 0){ prime[2]++; n /= 2; } } for (ll i = 3; i*i <= m; i+=2){ if (n % i == 0){ while(n % i == 0){ prime[i]++; n /= i; } } } if (n != 1){ prime[n]++; } } int main(){ ll N, K, ans=1; cin >> N >> K; prime_factor(N); for (auto [x, y] : prime){ ans *= C(K+y, y); ans %= modc; } cout << ans << endl; return 0; }