#include <bits/stdc++.h>
using namespace std;
long long int m = 1e9 + 7;
long long int po(long long int x, long long int y) {
  long long int res = 1;
  while (y > 0) {
    if (y % 2 != 0) res = ((res % m) * (x % m)) % m;
    y = y / 2;
    x = ((x % m) * (x % m)) % m;
  }
  return res;
}
int main() {
  int t = 1;
  while (t--) {
    long long int n, p, m1;
    cin >> n >> m1;
    p = po(2, m1);
    p = po(p - 1, n);
    cout << p;
  }
  return 0;
}
