n, p = map(int, input().split()) nfact_cnt = 0 tmp = n while tmp > 0: nfact_cnt += tmp // p tmp = tmp // p MOD = 10**9 + 7 N = 10**5 + 1010 fact = [1]*(N+1) r = 1 for i in range(1, N+1): fact[i] = r = r * i % MOD nfact = fact[n] print( (nfact_cnt * pow(nfact, nfact, MOD)) % MOD )