import sys input=sys.stdin.readline def I(): return int(input()) def MI(): return map(int, input().split()) def LI(): return list(map(int, input().split())) mod=10**9+7 def main(): P,K=MI() dp=[[0,0]for _ in range(K+1)] #i回操作して,Nが0or非0の通り数 dp[0][0]=1 for i in range(K): dp[i+1][0]=(dp[i][0]*(P+1) + dp[i][1]*2)%mod dp[i+1][1]=(dp[i][0]*(P-1) + dp[i][1]*(2*P-2))%mod print(dp[-1][0]) main()