#include <bits/stdc++.h>   using namespace std;   const long long mod = 1e9 + 7;   long long int mypow(long long int a, int b) {     if (b < 0) return 0;     long long int ans = 1;     for (; b; b >>= 1, a = a * a % mod) {       if (b & 1) ans = ans * a % mod;     }     return ans;   }   void add(long long int &a, long long int b) {     a += b;     if (a >= mod) a -= mod;   }   int main() {     int n, k;     cin >> n >> k;     long long int dp[k + 1][k + 1];     for (int i = (0); i < (k + 1); i++) {       for (int j = (0); j < (k + 1); j++) {         if (i) {           dp[i][j] = 0;           add(dp[i][j], j * dp[i - 1][j] % mod);           if (n > j) add(dp[i][j], (n - j) * dp[i - 1][j + 1] % mod);         } else {           dp[i][j] = mypow(2, n - j);         }       }     }     cout << dp[k][0] << endl;   }   