lemma定理:
有n对点,设表示到的路径方案数
则行列式表示到的严格不相交路径的方案数
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll mod=1e9+7;
const int N=2e3+100;
ll fac[N];
ll qp(ll a,ll b){
ll res=1;
while(b){
if(b&1) res=res*a%mod;
b>>=1;
a=a*a%mod;
}
return res%mod;
}
ll C(ll n,ll m){
return fac[n]*qp(fac[m],mod-2)%mod*qp(fac[n-m],mod-2)%mod;
}
void init(){
fac[0]=1;
for(int i=1;i<N;i++){
fac[i]=fac[i-1]*i%mod;
}
}
int main(){
ll n,m;
init();
while(scanf("%lld%lld",&n,&m)!=EOF){
printf("%lld\n",(C(n+m,n)*C(n+m,n)%mod-C(n+m,n+1)*C(n+m,n-1)%mod+mod)%mod);
}
return 0;
}