#include <bits/stdc++.h>
using namespace std;
long long m, n, M = 1e+9 + 7;
long long pow(long long x, long long y, long long z, long long p = 1) {
  if (y >= p) {
    if (y & p)
      return (z * pow(x, y, (z * z) % M, p << 1)) % M;
    else
      return (pow(x, y, (z * z) % M, p << 1)) % M;
  }
  return 1ll;
}
long long pow(long long x, long long y) { return pow(x, y, x); }
int main() {
  std::ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m;
  cout << pow(pow(2, m) - 1, n);
}
