def func(x,p): res = 0 y = p while x//y != 0: res += x//y y*=p return res MOD = 10**9+7 N,P = map(int,input().split()) tmp = 1 for i in range(2,N+1): tmp = (tmp*i)%MOD tmp2 = 1 for i in range(2,N+1): tmp2 = (tmp2*i)%(MOD-1) print(func(N,P)*pow(tmp,tmp2,MOD)%MOD)