n, p = map(int, input().split()) mod = 10**9 + 7 fact = [1] * (n + 1) inv = [1] * (n + 1) finv = [1] * (n + 1) for i in range(2, n + 1): fact[i] = fact[i - 1] * i % mod inv[i] = mod - inv[mod % i] * (mod // i) % mod finv[i] = finv[i - 1] * inv[i] % mod ans = 0 for i in range(1, n + 1): while i % p == 0: ans += 1 i //= p pp = pow(fact[n], fact[n], mod) print(ans * pp % mod)