#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;

const int N=3005;
const int MOD=1000000007;

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

void updata(int &x,int y)
{
	x+=y;x-=x>=MOD?MOD:0;
}

int main()
{
	scanf("%d%d",&n,&m);
	f[0][0][1]=1;
	for (int i=1;i<=n;i++) f[0][i][0]=1;
	for (int i=0;i<m;i++)
		for (int j=0;j<=n;j++)
			for (int k=0;k<=1;k++)
			{
				if (j) updata(f[i+1][j-1][k|(j==1)],f[i][j][k]);
				if (j) updata(f[i+1][j][k|(j==1)],f[i][j][k]);
				if (n-j) updata(f[i+1][j+1][k],f[i][j][k]);
				if (n-j) updata(f[i+1][j][k],f[i][j][k]);
			}
	int ans=0;
	for (int i=0;i<=n;i++) updata(ans,f[m][i][1]);
	printf("%d",ans);
	return 0;
}