#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
long long qRow(long long a, long long b) {
  long long ans = 1;
  while (b) {
    if (b & 1) ans = ans * a % mod;
    b >>= 1;
    a = a * a % mod;
  }
  return ans % mod;
}
int main() {
  long long n, m;
  cin >> n >> m;
  long long w = qRow(2, m) - 1 + mod;
  w %= mod;
  cout << qRow(w, n) << endl;
  return 0;
}
