#include <bits/stdc++.h>
long long INF = (1ll << 62);
using namespace std;
long long xp(long long a, long long b) {
  if (b == 0)
    return 1;
  else if (b % 2)
    return (a * xp(a, b - 1)) % (1000 * 1000 * 1000 + 7);
  long long z = xp(a, b / 2);
  return (z * z) % (1000 * 1000 * 1000 + 7);
}
int main(int argc, char* argv[]) {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long n, m;
  cin >> n >> m;
  cout << xp(xp(2, m) - 1, n) << endl;
  return 0;
}
