#include <bits/stdc++.h>
using namespace std;

int main() {
    long long n, m;
    cin >> n >> m;
    const int mod = 1e9 + 7;

    bitset<64> b(m-1);
    vector<long long> binary(64);
    for(int i=0;i<64;i++) {
        if(i == 0) binary[i] = 2;
        else binary[i] = binary[i-1] * binary[i-1] % mod;
    }
    long long out = 1;
    for(int i=0;i<64;i++) {
        if(b[i]) {
            out *= binary[i];
            out %= mod;
        }
    }

    out = out + 3 + (int)1e9 / 2;

    cout << out % mod << '\n';

    return 0;
}