#include <bits/stdc++.h>
using namespace std;

const int mo=int(1e9+7);
int n,m,f[3010][3010][2],ans;

void upd(int &x,int y){if ((x+=y)>=mo)  x-=mo;}

void work()
{
	scanf("%d %d",&n,&m);
	for (int i=1; i<=n; i++)  f[0][i][0]=1;
	f[0][0][1]=1;
	for (int i=0; i<m; i++)
		for (int j=0; j<=n; j++)
			for (int k=0; k<2; k++)
				if (f[i][j][k])
					{
						if (j>1)
							{
								upd(f[i+1][j-1][k],f[i][j][k]);
								upd(f[i+1][j][k],f[i][j][k]);
							}else  if (j==1)
							{
								upd(f[i+1][0][1],f[i][j][k]);
								upd(f[i+1][1][1],f[i][j][k]);
							}
						if (j<=n-1)
							{
								upd(f[i+1][j+1][k],f[i][j][k]);
								upd(f[i+1][j][k],f[i][j][k]);
							}
					}
	for (int i=0; i<=n; i++)  upd(ans,f[m][i][1]);
	printf("%d",ans);
}

int main()
{
	work();
	return 0;
}
