#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
long long power(long long b, long long p) {
  long long v = b;
  long long res = 1;
  while (p) {
    if (p & 1) res = (res * v) % mod;
    p >>= 1;
    v = (v * v) % mod;
  }
  return res;
}
long long memo[55][10005];
int vis[55][10005], vid = 0;
long long b;
long long solve(int idx, int k) {
  if (idx == 0 || k == 0) {
    return power(b, idx);
  }
  long long &res = memo[idx][k];
  if (vis[idx][k] == vid) return res;
  res = 0;
  vis[idx][k] = vid;
  for (int i = 0; i <= idx; ++i) {
    res = (res + solve(i, k - 1)) % mod;
  }
  return res = (res * power(idx + 1, mod - 2)) % mod;
}
int main() {
  long long v;
  int k;
  scanf("%lld %d", &v, &k);
  long long res = 1;
  for (long long i = 2; i * i <= v; ++i) {
    if ((v % i) == 0) {
      int c = 0;
      while ((v % i) == 0) {
        v /= i;
        ++c;
      }
      ++vid;
      b = i;
      res = (res * solve(c, k)) % mod;
    }
  }
  if (v > 1) {
    ++vid;
    b = v;
    res = (res * solve(1, k)) % mod;
  }
  printf("%lld", res);
}
