#include <bits/stdc++.h>
using namespace std;
const int Mod = 1e9 + 7;
long long N;
int K;
int fpow(int x, int y) {
  int res = 1;
  while (y) {
    if (y & 1) res = 1ll * res * x % Mod;
    x = 1ll * x * x % Mod;
    y >>= 1;
  }
  return res;
}
const int MAX_K = 1e4 + 5;
int f[200], ans = 1;
void solve(int n, int p) {
  for (int i = 1, t = 1; i <= n; i++, t = 1ll * t * p % Mod) f[i] = t;
  for (int i = 1; i <= K; i++)
    for (int j = 1, s = 0; j <= n; j++)
      s = (s + f[j]) % Mod, f[j] = 1ll * s * fpow(j, Mod - 2) % Mod;
  ans = 1ll * ans * f[n] % Mod;
}
int main() {
  cin >> N >> K;
  for (int i = 2; 1ll * i * i <= N; i++) {
    if (N % i) continue;
    int t = 0;
    while (N % i == 0) N /= i, ++t;
    solve(t + 1, i);
  }
  if (N > 1) solve(2, N % Mod);
  printf("%d\n", ans);
  return 0;
}
