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