#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const long long mod = 1000000007; long long m_pow(long long x, long long y) { long long ans = 1; while (y > 0) { if ((y & 1) == 1) { ans = ans * x % mod; } x = x * x % mod; y >>= 1; } return ans; } int main() { long long n, m; cin >> n >> m; m = m_pow(2, m); long long m1 = m_pow(m_pow(m, n), mod - 2); long long m2 = m; m += mod, m--, m %= mod; m = m * (m + 1) % mod; m = m * m_pow(2, mod - 2) % mod; m = m * m_pow(m2, n - 1) % mod; cout << m * m1 % mod << endl; }