# problem 2 P, K = map(int, input().split()) # dp[K] = K 回目の操作を終えた時に mod P で 0 # ex_dp[K] = K 回目の操作を終えた時に mod P で 0 でない dp = [0 for i in range(K+1)] ex_dp = [0 for i in range(K+1)] dp[0] = 1 mod = 10**9 + 7 for i in range(1, K+1): dp[i] = dp[i-1]*(P+1) + ex_dp[i-1]*2 ex_dp[i] = dp[i-1]*(P-1) + ex_dp[i-1]*(2*P-2) dp[i] %= mod ex_dp[i] %= mod ans = dp[K] print(ans)