#include int mt(int a,int b) { if(b==0) { return 1; } int c=mt(a,b>>1); c=(long long)c*c%1000000007; if(b&1) { c=(long long)c*a%1000000007; } return c; } int inv[2097152],h[2097152]; int main() { inv[1]=1; for(int i=2;i<=2000005;i++) { inv[i]=(long long)1000000007/i*inv[1000000007%i]%1000000007; inv[i]=1000000007-inv[i]; } h[0]=0; for(int i=1;i<=2000005;i++) { h[i]=h[i-1]+inv[i]; if(h[i]>=1000000007) { h[i]-=1000000007; } } int t; scanf("%d",&t); while(t--) { int n,x,y; scanf("%d%d%d",&n,&x,&y); if(x>y) { x=n-x+1; y=n-y+1; } if(x==y) { printf("0\n"); continue; } int f1=h[n]-h[n-y+1]; if(f1<0) { f1+=1000000007; } int f2=h[n]-h[y]; if(f2<0) { f2+=1000000007; } f1=(long long)f1*n%1000000007; f2=(long long)f2*n%1000000007; f1=(long long)f1*(n-y)%1000000007; f1=(long long)f1*inv[y]%1000000007; int aa=f1+f2; if(aa>=1000000007) { aa-=1000000007; } int ff=(long long)(n-y)*(y-1)%1000000007; ff=(long long)ff*inv[y]%1000000007; ff=(long long)ff*inv[n-y+1]%1000000007; ff=1-ff; if(ff<0) { ff+=1000000007; } aa=(long long)aa*mt(ff,1000000005)%1000000007; aa=(long long)aa*inv[n-y+1]%1000000007; aa+=h[n-x]; if(aa>=1000000007) { aa-=1000000007; } aa-=h[n-y+1]; if(aa<0) { aa+=1000000007; } aa++; if(aa>=1000000007) { aa-=1000000007; } printf("%d\n",aa); } return 0; }