def Z(): return list(map(int, input().split())) MOD = 10 ** 9 + 7 P, K = Z() dp0 = 1 dp1 = 0 for _ in range(K): ep0, ep1 = 0, 0 # tasizan ep0 += dp0 + dp1 ep1 += (dp0 + dp1) * (P - 1) # kakezan ep0 += dp0 * P + dp1 ep1 += dp1 * (P - 1) dp0, dp1 = ep0, ep1 dp0 %= MOD dp1 %= MOD print(dp0)