import copy N,K = map(int,input().split()); MOD = pow(10,9)+7 MAX = pow(2,K)-1 if N%2 == 1: ans = [(MAX//(2*N))%MOD]*N amari = MAX%(2*N) for i in range(N): #ans[i] += MAX//(2*N) if i%2 == 1 and amari >= i: ans[i] += 1 if i%2 == 0 and amari >= i + N: ans[i] += 1 else: ans = [(MAX//N)%MOD] amari = MAX%N for i in range(N): if i%2 == 1: if amari >= i: ans[i] += 1 #print(ans) for i in range(N): P = ans[i] + ans[(N-i)%N] #print(i,P) ret = P*pow(pow(2,K),MOD-2,MOD) print(ret%MOD)