#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
long long fastpow(long long a, long long x) {
  long long ret = 1;
  while (x) {
    if (x & 1) (ret *= a) %= mod;
    x >>= 1;
    (a *= a) %= mod;
  }
  return ret;
}
long long n, k, p[4000005], tot = 0, c[4000005], f[4000005][2];
int main() {
  cin >> n >> k;
  long long r = n;
  for (long long i = 2; i * i <= r; i++) {
    if (r % i == 0) {
      p[++tot] = i;
      while (r % i == 0) r /= i, c[tot]++;
    }
  }
  if (r != 1) p[++tot] = r, c[tot]++;
  long long ans = 1;
  for (int i = 1; i <= tot; i++) {
    for (int j = 0; j <= c[i]; j++) f[j][0] = f[j][1] = 0;
    f[c[i]][0] = 1;
    for (int j = 1; j <= k; j++) {
      for (int p = 0; p <= c[i]; p++) f[p][j & 1] = 0;
      for (int p = 0; p <= c[i]; p++) {
        long long s = f[p][(j - 1) & 1] * fastpow(p + 1, mod - 2) % mod;
        for (int q = 0; q <= p; q++) (f[q][j & 1] += s) %= mod;
      }
    }
    long long sum = 0;
    for (int j = 0; j <= c[i]; j++)
      (sum += f[j][k & 1] * fastpow(p[i], j) % mod) %= mod;
    (ans *= sum) %= mod;
  }
  cout << ans << endl;
  return 0;
}
