func_code_string: #include<bits/stdc++.h>   #define ls i<<1   #define rs i<<1|1   #define fi first   #define se second   #define pb push_back   #define mp make_pair   using namespace std;   typedef long long ll;   typedef vector<int> vct;   typedef pair<int,int> pii;   const int N=2E5+1;   const int inf=1<<30;   ll read()   {       ll a=0;       char b=1,c;       do if((c=getchar())==45)b=-1;while(c<48||c>57);       do a=(a<<3)+(a<<1)+(c&15);while((c=getchar())>47&&c<58);       return a*b;   }   void write(ll x,char c)   {       if(x<0)putchar(45),x=-x;       char a[20],s=0;       do a[++s]=x%10|48;while(x/=10);       do putchar(a[s]);while(--s);       putchar(c);   }   const int p=1E9+7;   int n,l,r;   int fac[N],inv[N];   vct a,ans;   int solve(int u,int v)   {       for(int i=0;i<n;++i)       {           int y=u-max(l+a[i]-1,0),z=v-max(n-r+a[i],0);           if(y<0||z<0)ans[i]=0;           else ans[i]=(fac[y+z]*1LL*inv[y]%p*inv[z]%p);       }       int res=0;       for(int i=0;i<n;++i)res=(res+(ans[i]-ans[i+1]+p)*1LL*a[i])%p;       return res;   }   int main()   {       fac[0]=fac[1]=inv[0]=inv[1]=1;       for(int i=2;i<N;++i)inv[i]=(p-p/i)*1LL*inv[p%i]%p;       for(int i=2;i<N;++i)       {           fac[i]=fac[i-1]*1LL*i%p;           inv[i]=inv[i-1]*1LL*inv[i]%p;       }       for(int x=read();x--;)       {           n=read(),l=read(),r=read();           a.resize(n);           ans.resize(n);           ans.pb(0);           iota(a.begin(),a.end(),min(1-l,r-n));           int m=n>>1;           if(n&1)write((solve(m,n-m)+solve(n-m,m))%p,  n );           else write(solve(m,m),  n );       }   }   