#include #include #define int long long #define inf 0x3f3f3f3f3f3f3f3f #define maxn 1234567 #define eps 1e-7 #define mod 1000000007 #define Mod 998244353 #define f(i,a,b) for(int i=a;i<=b;i++) #define r(i,a,b) for(int i=a;i>=b;i--) #define fx(i,a,b,x) for(int i=a;i<=b;i+=x) #define rx(i,a,b,x) for(int i=a;i>=b;i-=x) using namespace std; using namespace __gnu_cxx; using namespace __gnu_pbds; int T; int n,m,fact[maxn],ans; int qpow(int a,int n,int m){ int ans=1; while(n){ if(n&1)ans=ans*a%m; a=a*a%m; n>>=1; } return ans; } int C(int n,int m){ if(m<0||m>n)return 0; return fact[n]*qpow(fact[m]*fact[n-m]%mod,mod-2,mod)%mod; } void solve(){ scanf("%lld%lld",&n,&m); fact[0]=1; f(i,1,m)fact[i]=fact[i-1]*i%mod; f(i,-m,m){ if((m+i)%2==0){ int d=(i%(2*n)+2*n)%(2*n); if(d==0||d==2*n-1)ans=(ans+C(m,(m+i)/2))%mod; } } printf("%lld\n",ans); } signed main(){ T=1; // scanf("%lld",&T); while(T--)solve(); return 0; }