# 2次元dp # dp[i回目][for 0の数, 1 for 非ゼロの数] P, K = map(int, input().split()) mod = 10**9+7 dp = [[0]*2 for i in range(K+1)] dp[0][0] = 1 for i in range(1, K+1): # 加算分 dp[i][0] += dp[i-1][0] + dp[i-1][1] dp[i][1] += (dp[i-1][0] + dp[i-1][1])*(P-1) # 乗算分 dp[i][0] += dp[i-1][0]*P + dp[i-1][1] dp[i][1] += dp[i-1][1]*(P-1) dp[i][0] %= mod dp[i][1] %= mod #print(dp[i]) ans = dp[K][0] print(ans)