分析一下就是一个简单的数论组合数
唯一注意的就是要用逆元,否则要写挂
容斥:ans=总方案数-两个图毫不相干的方案数
总方案数=C((n(n-1)/2),a)×C((n(n-1)/2,b);
毫不相干=C((n(n-1)/2),a)×C((n(n-1)/2-a,b);
#include<bits/stdc++.h>
using namespace std;
#define lowbit(x) x&(-x)
#define ll long long
const int mod=1e9+7;
ll fastmi(ll a,ll b){
ll sum=1;
while(b){
if(b&1)sum=sum*a%mod;
a=a*a%mod;
b>>=1;
}
return sum;
}
ll inv(ll a){
return fastmi(a,mod-2)%mod;
}
int main(){
int n,a,b;
cin>>n>>a>>b;
int m=(n-1)*n/2,cc=m-a;
ll fz1=1,fm1=1,fz2=1,fm2=1,fz3=1,fm3=1;
for(int i=m;i>=(m-a+1);i--)fz1=(fz1*i)%mod;
for(int i=1;i<=a;i++)fm1=(fm1*i)%mod;
for(int i=m;i>=(m-b+1);i--)fz2=(fz2*i)%mod;
for(int i=1;i<=b;i++)fm2=(fm2*i)%mod;
for(int i=cc;i>=(cc-b+1);i--)fz3=(fz3*i)%mod;
for(int i=1;i<=b;i++)fm3=(fm3*i)%mod;
ll t1=(fz1*inv(fm1))%mod;
ll t2=(fz2*inv(fm2))%mod;
ll t3=(fz3*inv(fm3))%mod;
cout<<t1*(t2-t3+mod)%mod;
return 0;
}