#include const int P=1000000007; long long p=1ll*P*P; inline int mul(const int &a,const int &b){return 1ll*a*b%P;} inline int sub(int a,const int &b){a-=b;return (a<0)?a+P:a;} inline int add(int a,const int &b){a+=b;return(a>=P)?a-P:a;} int qsm(int a,int b){ int ans=1; while(b){ if(b&1)ans=mul(ans,a); a=mul(a,a); b>>=1; } return ans; } int T,n,x,y,f[2000001],inv[2000001]; int F(int S,int x,int y){ return mul(add(mul(S,sub(inv[y],inv[x])),sub(f[x],f[y])),x); } int main(){ scanf("%d",&T); inv[0]=inv[1]=1; for(int i=2;i<=2000000;++i)inv[i]=mul(P-P/i,inv[P%i]); for(int i=1;i<=2000000;++i) f[i]=add(f[i-1],inv[i]); for(int fd=1;fd<=T;++fd){ scanf("%d%d%d",&n,&x,&y); if(x==y){ printf("%d\n",0); continue; } if(x