#include <bits/stdc++.h>
using namespace std;
long long mod = 1e9 + 7;
long long ext_gcd(long long a, long long b, long long& x, long long& y) {
  if (b == 0) {
    x = 1;
    y = 0;
    return a;
  } else {
    long long g = ext_gcd(b, a % b, y, x);
    y -= a / b * x;
    return g;
  }
}
long long mod_inv(long long a) {
  long long x, y;
  ext_gcd(a, mod, x, y);
  return (x % mod + mod) % mod;
}
long long mod_exp(long long a, long long b) {
  if (b == 0) return 1;
  long long c = mod_exp(a, b / 2);
  c = (c * c) % mod;
  if (b % 2 != 0) c = (c * a) % mod;
  return c;
}
int32_t main() {
  long long x, k;
  cin >> x >> k;
  long long n = mod_exp(2, k);
  long long p1 = (mod_exp(n, 2) * (x % mod)) % mod;
  long long p2 = ((n * (n - 1)) / 2) % mod;
  long long ans = (p1 - p2 + mod) * 2;
  ans = (ans * mod_inv(n)) % mod;
  if (x == 0) ans = 0;
  cout << ans << endl;
}
