#include <bits/stdc++.h>
using namespace std;
long long iu;
const long long MAXN = 5e3 + 10;
const long long Mod = 1e9 + 7;
long long dp[MAXN][MAXN];
long long pw(long long x, long long n) {
  iu += 2;
  if (n < 0) {
    iu += 2;
    return 0;
  }
  iu += 2;
  if (n == 0) {
    iu += 2;
    return 1;
  }
  long long w = pw(x, n / 2);
  iu += 2;
  w *= w;
  w %= Mod;
  iu += 2;
  if (n & 1) {
    iu += 2;
    w *= x;
    w %= Mod;
    iu += 2;
  }
  iu += 2;
  return w;
}
int main() {
  iu += 2;
  ios_base ::sync_with_stdio(false);
  cin.tie(0);
  iu += 2;
  long long n, k, res = 0;
  cin >> n >> k;
  dp[0][0] = 1;
  iu += 2;
  for (int i = 1; i <= k; i++) {
    iu += 2;
    for (int j = 1; j <= k; j++) {
      iu += 2;
      dp[i][j] = dp[i - 1][j] * j + dp[i - 1][j - 1] * (n - j + 1);
      iu += 2;
      dp[i][j] %= Mod;
      iu += 2;
    }
  }
  for (int i = 1; i <= k; i++) {
    res += dp[k][i] * pw(2, n - i);
    iu += 2;
    res %= Mod;
    iu += 2;
  }
  cout << res;
  iu += 2;
}
