N, P = gets.split.map(&:to_i)
MOD = 1000000007

x_m1 = (1..N).inject(1) { |e, i| e = (e * i) % (MOD - 1) }
x_m = (1..N).inject(1) { |e, i| e = (e * i) % MOD }

sum = 0
i = 1
while P.pow(i) <= N
  sum += N / P.pow(i)
  i += 1
end

k = x_m.pow(x_m1, MOD)
puts k * sum % MOD