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)