#include using namespace std; #define REP(i,n) for(int i=0; i<(int)(n); i++) const long long MOD = 1e9 + 7; long long dp[1000000+1][2]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); long long p; int k; cin >> p >> k; dp[0][0] = 1; dp[0][1] = 0; for (int i = 1; i <= k; i++) { dp[i][0] = (p + 1) * dp[i-1][0] % MOD + 2 * dp[i-1][1] % MOD; dp[i][1] = (p - 1) * dp[i-1][0] % MOD + (2 * p - 2) * dp[i-1][1] % MOD; dp[i][0] %= MOD; dp[i][1] %= MOD; } cout << dp[k][0] << endl; return 0; }