#include <cstdio>
#include <algorithm>

using namespace std;

const int N=2005,mo=1e9+7;

typedef long long LL;

int n,m,f[N][N][2],s[N],ans;

int main()
{
	scanf("%d%d",&n,&m);
	f[n+1][0][1]=1;
	for (int i=n;i;i--)
	{
		for (int j=n-i;j>=0;j--) s[j]=(s[j+1]+f[i+1][j][0])%mo;
		for (int j=0;j<=n-i+1;j++)
		{
			f[i][j][1]=(j>0)?(f[i+1][j-1][1]+s[j-1])%mo:0;
			f[i][j][0]=(s[j]+f[i+1][j][1])%mo;
		}
	}
	ans=f[1][n-m][0];
	for (int i=1;i<n-m;i++) ans=ans*2%mo;
	printf("%d\n",ans);
	return 0;
}