#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<cstdlib>
#include<ctime>

using namespace std;

const int MAXN=3010;
const int Mod=1e9+7;
int f[MAXN][MAXN][2];

int main()
{
	int n,m;
	scanf("%d%d",&n,&m);
	for (int i=0;i<=n;i++)
	{
		f[0][i][0]=1;
	}
	for (int i=1;i<=m;i++)
	{
		for (int j=0;j<=n;j++)
		{
			int k=n-j;
			if (j)
			{
				f[i][j][1]+=f[i-1][j][1];
				f[i][j][1]%=Mod;
				f[i][j][1]+=f[i-1][j-1][1];
				f[i][j][1]%=Mod;
				if (j==1)
				{
					f[i][j][1]+=f[i-1][j][0];
					f[i][j][1]%=Mod;
					f[i][j][1]+=f[i-1][j-1][0];
					f[i][j][1]%=Mod;
				}	
				else
				{
					f[i][j][0]+=f[i-1][j][0];
					f[i][j][0]%=Mod;
					f[i][j][0]+=f[i-1][j-1][0];
					f[i][j][0]%=Mod;
				}
			}
			if (k)
			{
				f[i][j][1]+=f[i-1][j][1];
				f[i][j][1]%=Mod;
				f[i][j][1]+=f[i-1][j+1][1];
				f[i][j][1]%=Mod;
				if (j==0)
				{
					f[i][j][1]+=f[i-1][j][0];
					f[i][j][1]%=Mod;
					f[i][j][1]+=f[i-1][j+1][0];
					f[i][j][1]%=Mod;
				}
				else
				{
					f[i][j][0]+=f[i-1][j][0];
					f[i][j][0]%=Mod;
					f[i][j][0]+=f[i-1][j+1][0];
					f[i][j][0]%=Mod;
				}
			}
		}
	}
	int ans=0;
	for (int i=0;i<=n;i++)
	{
		ans+=f[m][i][1];
		if (ans>Mod)
		{
			ans-=Mod;
		}
	}
	cout<<ans<<endl;
    return 0;
}
