#include #include "atcoder/modint" using i64 = long long; using Fp = atcoder::modint1000000007; int main() { i64 N, P; std::cin >> N >> P; i64 base = 0; i64 q = 1; while (q <= N) { q *= P; base += N / q; } Fp u = 1; for (int i = 1; i <= N; ++i) u *= i; i64 x = 1; for (int i = 1; i <= N; ++i) x = (x * i) % 1000000006; u = u.pow(x); std::cout << (base * u).val() << std::endl; }