#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
#define REP(i,st,ed) for(int i=st,i##end=ed;i<=i##end;++i)
#define DREP(i,st,ed) for(int i=st,i##end=ed;i>=i##end;--i)
const int maxn=3005,mod=1e9+7;
int n,m,dp[maxn][maxn][2];
int main(){
	scanf("%d%d",&m,&n);
	dp[0][0][1]=1;
	REP(i,1,m)dp[0][i][0]=1;
	REP(i,1,n)
		REP(j,0,m)
			REP(k,0,1){
				if(j)(dp[i][j][k|(j==1)]+=dp[i-1][j][k])%=mod;
				if(j<m)(dp[i][j][k|(j==0)]+=dp[i-1][j+1][k])%=mod;
				if(j<m)(dp[i][j][k]+=dp[i-1][j][k])%=mod;
				if(j)(dp[i][j][k]+=dp[i-1][j-1][k])%=mod;
			}
	int ans=0;
	REP(i,0,m)(ans+=dp[n][i][1])%=mod;
	printf("%d\n",ans);
	return 0;
}