#include using namespace std; using ll = long long int; using ld = long double; #define pow(n,m) powl(n,m) #define sqrt(n) sqrtl(n) const ll MAX = 5000000000000000000; const ll MOD = 1000000007; void randinit(){srand((unsigned)time(NULL));} ll modpow(ll A,ll B,ll M){ ll r = 1,p = A; while(B > 0){ if(B % 2 == 1) r = (r * p) % M; p = (p * p) % M; B /= 2; } return r; } int main(){ ll N,K; cin >> N >> K; cout << ((((modpow(N,K,MOD) - modpow(N - 1,K,MOD)) * N) % MOD) + MOD) % MOD << endl; }