voiddivide(ll n) { m = 0; for (ll i = 2; i <= sqrt(n); i++) { if (0 == n % i) { p[++m] = i, c[m] = 0; while (0 == n % i) n /= i, c[m]++; } } if (n > 1) p[++m] = n, c[m] = 1; return; }
ll power(ll a, ll b, ll p) { ll res = 1; while (b) { if (b & 1) res = (res * a) % p; a = (a * a) % p, b >>= 1; } return res % p; }
intmain() { scanf("%lld%lld", &a, &b); divide(a); if (0 == a) printf("0\n"); else { ll res = 1; for (int i = 1; i <= m; i++) res = res * sum(p[i], b * c[i]) % mod; printf("%lld\n", res); } return0; }