#include <bits/stdc++.h>
using namespace std;
const int N = 1e4 + 5;
const int mod = 1e9 + 7;
long long n, f[N][55], inv[55];
int m;
long long power(long long x, int n) {
  long long s = 1;
  while (n) {
    if (n & 1) (s *= x) %= mod;
    (x *= x) %= mod, n >>= 1;
  }
  return s;
}
long long solve(long long p, int k) {
  long long pw = 1, res = 0;
  for (int i = (0); i <= (m); ++i)
    for (int j = (0); j <= (k); ++j) f[i][j] = 0;
  f[0][k] = 1;
  for (int i = (1); i <= (m); ++i)
    for (int j = (0); j <= (k); ++j)
      for (int h = (j); h <= (k); ++h)
        (f[i][j] += inv[h + 1] * f[i - 1][h]) %= mod;
  for (int i = (0); i <= (k); ++i)
    (res += f[m][i] * pw) %= mod, (pw *= p) %= mod;
  return res;
}
int main() {
  long long ans = 1;
  scanf("%lld%d", &n, &m);
  for (int i = (0); i <= (51); ++i) inv[i] = power(i, mod - 2);
  long long x = n;
  for (long long i = 2; i * i <= x; ++i)
    if (x % i == 0) {
      int k = 0;
      while (x % i == 0) x /= i, ++k;
      (ans *= solve(i, k)) %= mod;
    }
  if (x > 1) (ans *= solve(x, 1)) %= mod;
  printf("%lld\n", ans);
  return 0;
}
