#include <bits/stdc++.h>
using namespace std;
void init() {
  cin.tie(0);
  cin.sync_with_stdio(0);
  cout.tie(0);
}
int dx[] = {1, -1, 0, 0};
int dy[] = {0, 0, 1, -1};
const int MOD = 1e9 + 7;
long long power(long long a, long long N) {
  if (N == 0) return 1;
  long long r = power(a, N / 2);
  r = (r * r) % MOD;
  if (N % 2) return (r * a) % MOD;
  return r;
}
int main() {
  init();
  int n, m;
  cin >> n >> m;
  long long ans = power(2, m) - 1;
  cout << power(ans, n);
}
