#include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); /** * N!中にPの因数が k 個含まれている * ans = k * (N!^{N!}) */ long long mod {1000000007}; long long n, p; cin >> n >> p; long long k {}; for (long long ct {p}; ct <= n; ct *= p) { k += n / ct; k %= mod; } long long n_fac {1}; for (long long i=1;i<=n;++i) { n_fac *= i; n_fac %= mod; } //cout << "fac[i]:" << n_fac << '\n'; long long n_fac_pow {n_fac}; long long ans {1}; for (long long c = n_fac; c != 0; c>>=1) { if (c & 1) ans *= n_fac_pow; n_fac_pow *= n_fac_pow; ans %= mod; n_fac_pow %= mod; } ans *= k; ans %= mod; cout << ans << '\n'; }