#include<bits/stdc++.h>
using namespace std;
long long p=1000000007ll;
long long n,k,dp[10001];
long long quickpow(long long a,long long b)
{
	if(b<0) return 1;
	if(b==0&&n>1) return 1;
	if(b==0&&n==1) return 0;
	if(b==1) return a%p;
	if(b%2==0)
	{
		long long t=quickpow(a,b/2);
		return t*t%p;
	}
	else
	{
		long long t=quickpow(a,b/2);
		t=t*t%p;
		return t*a%p;
	}
}

int main(){
    cin>>n>>k;
    dp[0]=1;
    for(int i=1;i<n;i++)
	{
		for(int j=i;j>0;j--)
			dp[j]=(dp[j+1]+dp[j-1])%p;
		dp[0]=dp[1];
	}
	cout<<(long long)(dp[n-k]*quickpow(2,n-k-1)%p)<<endl;
}