#include <bits/stdc++.h>
using namespace std;
const int K = 10005, N = 55, mod = 1e9 + 7;
int k, dp[K][N], inv[N], ans = 1;
long long n;
inline void addmod(int &a, int b) { a = (a + b) % mod; }
inline void mulmod(int &a, int b) { a = 1ll * a * b % mod; }
inline int add(int a, int b) { return (a + b) % mod; }
inline int mul(int a, int b) { return 1ll * a * b % mod; }
inline void solve(int p, int c) {
  memset(dp, 0, sizeof dp);
  dp[0][c] = 1;
  for (int i = 1, I = (k) + 1; i < I; ++i)
    for (int j = c, I = (0) - 1; j > I; --j)
      dp[i][j] = add(dp[i][j + 1], mul(dp[i - 1][j], inv[j + 1]));
  int cur = 0, expo = 1;
  for (int i = 0, I = (c) + 1; i < I; ++i)
    addmod(cur, mul(dp[k][i], expo)), mulmod(expo, p);
  mulmod(ans, cur);
}
int main() {
  cin >> n >> k;
  inv[1] = 1;
  for (int i = 2, I = (N - 1) + 1; i < I; ++i)
    inv[i] = mul(inv[mod % i], mod - mod / i);
  for (int p = 2, I = (sqrt(n)) + 1; p < I; ++p) {
    int c = 0;
    while (n % p == 0) n /= p, ++c;
    if (c) solve(p, c);
  }
  if (n > 1) solve(n % mod, 1);
  cout << ans;
}
