#include <bits/stdc++.h>
long long int p = 1e9 + 7;
long long int power(long long int x, long long int y) {
  long long int res = 1;
  x = x % p;
  while (y > 0) {
    if (y & 1) res = (res * x) % p;
    y = y >> 1;
    x = (x * x) % p;
  }
  return res;
}
int main() {
  long long int n, k;
  scanf("%lld%lld", &n, &k);
  if (k == 0 || n == 0) {
    printf("%lld\n", (2 % p * n % p) % p);
    return 0;
  }
  long long int x = power(2, k + 1);
  long long int g = power(2, k);
  long long int a1 = ((n) % p * g % p) % p;
  long long int a2 = ((n - 1) % p * g % p) % p;
  long long int num1 = (a1 % p * (a1 + 1) % p) % p;
  long long int num2 = (a2 % p * (a2 + 1) % p) % p;
  long long int num = (num1 - num2 + p) % p;
  long long int ans1 = power(g, p - 2);
  long long int ans = (num % p * ans1 % p) % p;
  printf("%lld\n", ans);
}
