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)