n, p = map(int, input().split()) mod = 10**9+7 fac = [1]*(n+1) for i in range(2, n+1): fac[i] = fac[i-1]*i%mod p2 = p ans = 0 while True: tmp = n // p2 if tmp == 0: break ans += tmp p2 *= p print(pow(fac[n], fac[n], 10**9+7)*ans%(10**9+7))