func_code_string: #include <bits/stdc++.h>   using namespace std;   const int64_t MOD = 1e9 + 7;   const int N = 2e5 + 5;      int64_t mpow(int64_t b,int64_t e,int64_t m){       int64_t r = 1;       while(e > 0){           if(e & 1){               r = (r*b)%m;           }           b = (b*b)%m;           e >>= 1;       }       return r;   }      int main(){       ios_base::sync_with_stdio(false);       cin.tie(NULL);          int64_t fact[N],ifact[N];       ifact[0] = fact[0] = 1;       for(int i=1;i<N;i++){           fact[i] = (i * fact[i-1]) % MOD;           ifact[i] = mpow(fact[i],MOD-2,MOD);       }       auto comb = [&](int x,int y){ // xCy           return (fact[x]*ifact[x-y]%MOD*ifact[y])%MOD;       };       int t;       cin >> t;       while(t--){           int n,l,r;           cin >> n >> l >> r;           int x = min(1-l,r-n);           int L=0,R=n+1;           int64_t res = (x*(((n%2)+1)*comb(n,n/2))%MOD)%MOD;           res %= MOD;           for(int i=x+1;;i++){               while(L+1-i < l) L++;               while(R-1+i > r) R--;               if(L > (n+1)/2 || n+1-R > (n+1)/2 || R-L-1 < 0) break;               if(n%2 == 1){                   if(L <= n/2) res = (res+comb(R-L-1,n/2-L))%MOD;                   if(L <= (n+1)/2) res = (res+comb(R-L-1,(n+1)/2-L))%MOD;               }else{                   res = (res+comb(R-L-1,n/2-L))%MOD;               }           }           cout << (res%MOD+MOD)%MOD <<   n ;       }   }