#include #define rep(i,n) for(int i=0;i<(int)(n);i++) using namespace std; using ll = long long ; using P = pair ; using pll = pair; constexpr int INF = 1e9; constexpr long long LINF = 1e17; constexpr int MOD = 1000000007; int main(){ ll p ,k; cin >> p >> k; vector> dp(k+1,vector(2,0)); dp[0][0] = 1; for(int i=1;i<=k;i++){ dp[i][0] = (((p+1)*dp[i-1][0])%MOD + (2*dp[i-1][1])%MOD)%MOD; dp[i][1] = (((p-1)*dp[i-1][0])%MOD + ((2*p-2)*dp[i-1][1])%MOD)%MOD; } cout << dp[k][0] << endl; return 0; }