H,W = map(int,input().split()) P = 10 ** 9 + 7 C = W + 5 fact = [1] * C fact_inv = [1] * C for i in range(2,C): fact[i] = fact[i-1] * i % P fact_inv[-1] = pow(fact[-1],P-2,P) for i in range(C-2,0,-1): fact_inv[i] = fact_inv[i+1] * (i + 1) % P def comb(n,k): return fact[n] * fact_inv[k] % P * fact_inv[n-k] % P ans = 0 for j in range(W+1): if j % 2 == 0: c = 1 else: c = -1 tmp = comb(W,j) t = pow(2,W-j,P)-1 s = pow(t,H,P) ans = (ans + c * tmp*s) % P print(ans)