#include #define pb push_back #define mp make_pair #define fi first #define se second using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair pii; typedef pair pll; template bool chkmax(T &x,T y){return x bool chkmin(T &x,T y){return x>y?x=y,true:false;} int readint(){ int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } const int cys=1000000007,N=2000000; int n,x,y; ll ds[2000005],sum[2000005]; ll qpow(ll x,ll p){ ll ret=1; for(;p;p>>=1,x=x*x%cys) if(p&1) ret=ret*x%cys; return ret; } int main(){ int T=readint(); ds[1]=1; for(int i=2;i<=N;i++) ds[i]=(cys-cys/i)*ds[cys%i]%cys; for(int i=1;i<=N;i++) sum[i]=(sum[i-1]+ds[i])%cys; while(T--){ n=readint(); x=readint(); y=readint(); if(x==y){ printf("0\n"); continue; } ll tmp=sum[n]-sum[n-y+1]+1+(sum[n]-sum[y])*ds[n-y+1]%cys*y-(n-y)*ds[n-y+1]; tmp%=cys; if(tmp<0) tmp+=cys; ll t=tmp*(n-y+1)%cys,ans; if(x