#include <bits/stdc++.h>
using namespace std;
const long long NR = 1e6 + 200, oo = 2e12 + 10, MOD = 1e9 + 7;
const long double pi = 2 * acos(0.0);
long long n, cnt, k, Ans = 1;
vector<long long> st, st2;
long long dp[200][10005], sum, power;
long long lg_pow(long long a, long long b) {
  if (!b) return 1;
  if (b == 1) return a;
  if (b % 2) return a * lg_pow(a * a % MOD, b >> 1) % MOD;
  return lg_pow(a * a % MOD, b >> 1);
}
signed main() {
  long long i, j, d, l;
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> k;
  if (n == 1) return cout << 1, 0;
  for (d = 2; d * d <= n; ++d) {
    cnt = 0;
    while (n % d == 0) {
      ++cnt;
      n /= d;
    }
    if (cnt) st.push_back(cnt), st2.push_back(d);
  }
  if (n != 1) st.push_back(1), st2.push_back(n);
  for (i = 0; i < st.size(); ++i) {
    power = st[i];
    sum = 0;
    for (j = 0; j <= k + 1; ++j) dp[power + 1][j] = 0;
    for (j = power; j >= 0; --j) {
      dp[j][0] = lg_pow(power + 1, MOD - 2);
      dp[j][1] = (dp[j + 1][1] + dp[j][0] * lg_pow(j + 1, MOD - 2) % MOD) % MOD;
    }
    for (j = 1; j < k; ++j) {
      for (l = power; l >= 0; --l) {
        dp[l][j + 1] =
            (dp[l + 1][j + 1] + dp[l][j] * lg_pow(l + 1, MOD - 2) % MOD) % MOD;
      }
    }
    for (l = power; l >= 0; --l) {
      sum += (dp[l][k - 1] * (lg_pow(st2[i], l) % MOD)) % MOD;
      sum %= MOD;
    }
    Ans *= sum;
    Ans %= MOD;
  }
  cout << Ans << '\n';
  return 0;
}
