#include <iostream>
using namespace std;

long long p=1e9+7;
long long re(long long a,long long b,long long c){

long long d=1;
a=a%c;
while(b){
    if(b&1)
d=(a%c*(d%c))%c;
a=(a%c*(a%c))%c;
b>>=1;



}

return d%c;



}
int main(){
long long n,m;
cin>>n>>m;
long long a=re(2,m,p);
long long b=(a-1)%p;
long long c=re(b,n,p);
cout<<c;


    return 0;
}