#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
long long n,m,w,t,mo=1000000007;long long poww(long long x,long long y)
{ long long r=1;while (y!=0){if (y&1) r=(long long)r*x%mo; y>>=1;x=x*x%mo;}return r;
}
int main()
{scanf("%lld%lld",&n,&m);long long ans=1;for (long long i=1;i<=n-2;i++) ans=(long long)ans*i%mo;m=m-(n-1);w=(n+n-1+((n-1)*n)/2%mo)%mo;t=1;long long x,y,z;for (long long i=1;i<=w-1+m;i++){t=(long long)t*i%mo;if (i==w-1+m) x=t; else if (i==w-1) y=t; else if (i==m) z=t;}ans=(long long)ans*x%mo*poww(y,mo-2)%mo*poww(z,mo-2)%mo;printf("%lld",ans);return 0;
}