#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1);
long long ppow(long long a, long long p, long long m) {
  long long ret = 1;
  while (p) {
    if (p & 1) ret = ret * a % m;
    a = a * a % m, p >>= 1;
  }
  return ret;
}
const long long mod = 1e9 + 7;
int main() {
  cin.tie(0), ios::sync_with_stdio(0);
  long long n, m;
  cin >> n >> m;
  long long base = ppow(2, m, mod) - 1;
  if (base == -1) base = mod - 1;
  long long ans = ppow(base, n, mod);
  cout << ans << '\n';
  return 0;
}
