#include #include #include using namespace std; long mod=1e9+7,F[1<<20],I[1<<20]; long power(long a,long b){return b?power(a*a%mod,b/2)*(b%2?a:1)%mod:1;} long C(int a,int b){return F[a]*I[b]%mod*I[a-b]%mod;} int N,M; main() { F[0]=1; for(int i=1;i<1<<20;i++)F[i]=F[i-1]*i%mod; I[(1<<20)-1]=power(F[(1<<20)-1],mod-2); for(int i=(1<<20)-1;i--;)I[i]=I[i+1]*(i+1)%mod; cin>>N>>M; if(N==1) { cout<<1<a; for(int i=0;i<=M+1;i+=2*N) { if(i<=M)a.push_back(i); if(i&&i<=M)a.push_back(-i); if(abs(i-1)<=M)a.push_back(i-1); if(i&&abs(-i-1)<=M)a.push_back(-i-1); } long ans=0; for(int j:a) { j=abs(j); if((M-j)%2==1)continue; int X=j+(M-j)/2,Y=(M-j)/2; ans=(ans+C(M,X))%mod; } cout<