#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
constexpr int mod=1000000007;
int half(const int&x){
	return ll(x)*((mod+1)/2)%mod;
	// return ((x&1)?(x+mod):x)>>1;
}
ll quickpow(ll x,int k,ll ret=1){
	for(; k; k>>=1,x=x*x%mod)
		(k&1)&&(ret=ret*x%mod);
	return ret;
}
constexpr int max_n=500000;
int a[max_n+1];
int main(){
	int n,t,ans=0;
	scanf("%d%dd",&n,&t);
	for(int i=1; i<=n; ++i)
		a[i]=1;
	for(int i=1; i<=t; ++i)
		++a[rand()%n+1];
	ll now=0;
	for(int i=1; i<=n; ++i){
		now=now*((mod+1)/2)%mod;
		ans=(ans+(now+1)*(quickpow(2,a[i])-1))%mod;
		now=(quickpow(2,a[i],now)+(quickpow(2,a[i])-1))%mod;
	}
	printf("%lld\n",quickpow(2,n-1+t*2,ans));
	return 0;
}