#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>

#define fo(i,j,l) for(int i=j;i<=l;++i)
#define fd(i,j,l) for(int i=j;i>=l;--i)

using namespace std;
typedef long long ll;
const ll N=32e2,mo=1e9+7;

ll f[2][N][2];

int n,m;

int main()
{
	cin>>n>>m;
	fo(i,1,n)f[0][i][0]=1;
	f[0][0][1]=1;
	int u=0,v;
	fo(i,1,m){
		v=u^1;
		fo(i,0,n)f[v][i][0]=f[v][i][1]=0;
		fo(i,0,n)f[u][i][0]=f[u][i][0]%mo,f[u][i][1]=f[u][i][1]%mo;
		fo(i,1,n)f[v][i-1][(i==1)]=f[v][i-1][(i==1)]+f[u][i][0],f[v][i-1][1]=f[v][i-1][1]+f[u][i][1];
		fo(i,1,n)f[v][i][(i==1)]=f[v][i][(i==1)]+f[u][i][0],f[v][i][1]=f[v][i][1]+f[u][i][1];
		fo(i,0,n-1)f[v][i][0]=f[v][i][0]+f[u][i][0],f[v][i][1]=f[v][i][1]+f[u][i][1];
		fo(i,0,n-1)f[v][i+1][0]=f[v][i+1][0]+f[u][i][0],f[v][i+1][1]=f[v][i+1][1]+f[u][i][1];
		u=v;
	}
	ll ans=0;
	fo(i,0,n)ans=(ans+f[u][i][1])%mo;
	cout<<ans;
}