#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
long long qpow(long long a, long long b) {
  long long res = 1;
  while (b) {
    if (b & 1) res = res * a % mod;
    a = a * a % mod;
    b >>= 1;
  }
  return res;
}
int main() {
  long long x, k;
  while (~scanf("%lld%lld", &x, &k)) {
    if (k == 0) {
      printf("%lld\n", 2 * x % mod);
      continue;
    } else if (x == 0) {
      printf("0\n");
      continue;
    }
    long long res = (x % mod * qpow(2, 2 * k) % mod - qpow(2, 2 * k - 1) % mod +
                     qpow(2, k - 1) % mod) *
                    2 % mod;
    long long divi = qpow(qpow(2, k), mod - 2);
    res = (res + mod) % mod * divi % mod;
    printf("%lld\n", res);
  }
  return 0;
}
