from collections import *
from itertools import *
from functools import *
from heapq import *
import sys,math
input = sys.stdin.readline

N,P = map(int,input().split())
mod = 10**9 + 7
f0 = 1
f1 = 1
for i in range(1,N+1):
    f0 *= i
    f1 *= i
    f0 %= mod-1
    f1 %= mod

e = 0
res = P
while res <= N:
    e += N//res
    res *= P

ans = e*pow(f1,f0,mod)
print(ans%mod)