func_code_string: #include <bits/stdc++.h>      using namespace std;   const int mod = 1e9 + 7;   namespace math   {          int inc(int x, int y) { return x + y >= mod ? x + y - mod : x + y; }       int qpow(int a, int x, int mo)       {           int res = 1;           while (x)           {               if (x & 1)                   res = 1ll * res * a % mod;               a = 1ll * a * a % mod;               x >>= 1;           }           return res;       }       vector<int> Fac, invFac;       void Finit(int n)       {           Fac.resize(n + 1);           invFac.resize(n + 1);           Fac[0] = 1;           invFac[0] = 1;           for (int i = 1; i <= n; i++)               Fac[i] = 1ll * Fac[i - 1] * i % mod;           invFac[n] = qpow(Fac[n], mod - 2, mod);           for (int i = n - 1; i >= 1; i--)               invFac[i] = 1ll * invFac[i + 1] * (i + 1) % mod;       }       int C(int n, int m)       {           if (m == 0)               return 1;           if (n < m || m < 0)               return 0;           return (int)(1ll * Fac[n] * invFac[m] % mod * invFac[n - m] % mod);       }       int A(int n, int m)       {           if (n < m || m < 0)               return 0;           return (int)(1ll * Fac[n] * invFac[n - m] % mod);       }   }   using namespace math;   void solve()   {       int n, l, r;       cin >> n >> l >> r;       Finit(n);       int ans = 0;       int up = r - n, dn = 1 - l;       if (dn < up)       {           if (n & 1)           {               ans = inc(ans, 2ll * dn * C(n, n / 2) % mod);           }           else           {               ans = inc(ans, 1ll * dn * C(n, n / 2) % mod);           }           for (int i = 1; i <= n; i++)           {               int need_add = i;               int need_del = max(0, dn - up + i);               if (n - need_del - need_add < 0)                   break;               ans = inc(ans, 1ll * C(n - need_del - need_add, n / 2 - need_add) % mod);               if (n & 1)                   ans = inc(ans, 1ll * C(n - need_del - need_add, n / 2 + 1 - need_add) % mod);           }       }       else       {           if (n & 1)           {               ans = inc(ans, 2ll * up * C(n, n / 2) % mod);           }           else           {               ans = inc(ans, 1ll * up * C(n, n / 2) % mod);           }              for (int i = 1; i <= n; i++)           {               int need_del = i;               int need_add = max(0, up - dn + i);                  if (n - need_del - need_add < 0)                   break;               ans = inc(ans, 1ll * C(n - need_del - need_add, n / 2 - need_add) % mod);               if (n & 1)                   ans = inc(ans, 1ll * C(n - need_del - need_add, n / 2 + 1 - need_add) % mod);               //cout << ans << endl;           }       }       cout << ans << endl;   }   int main()   {       ios::sync_with_stdio(false);       cin.tie(nullptr);       int T = 1;       cin >> T;       while (T--)       {           solve();       }   }