#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp> 
#include <ext/pb_ds/tree_policy.hpp> 

using namespace __gnu_pbds; 
using namespace std;

#define int           long long
#define S             second
#define F             first
#define pb            push_back
#define all(c)        (c).begin(),(c).end()
#define rall(c)       (c).rbegin(),(c).rend() 
#define lb            lower_bound
#define ub            upper_bound
#define si(c)         (int)((c).size())
#define lcm(a, b)      (a * (b / __gcd(a,b)))  
#define inf           (int)(4e18)
#define endl          '\n'
#define mp            make_pair
#define time(s)       (double(clock()-s)/double(CLOCKS_PER_SEC))
#define debug(args...)    _F(#args, args)
#define vi            std::vector<int>
#define pii           pair<int, int> 
#define vpi           vector<pii>
#define ordered_set   tree<pii, null_type,less<pii>, rb_tree_tag,tree_order_statistics_node_update> 

clock_t start;
mt19937_64 rng(chrono::system_clock::now().time_since_epoch().count());

template<typename T> void _F(const char *name, T arg1){ cerr << name << " = " << arg1 << endl;}
template<typename T, typename... Args> void _F(const char *names, T arg1, Args... args)
{ const char *name = strchr(names, ',');cerr.write(names, name-names) << " = " << arg1 << endl;_F(name+2, args...);}

template< typename T1, typename T2 > istream& operator>>(istream& in, pair<T1, T2> &q){ in >> q.F >> q.S; return in;}
template< typename T1, typename T2 > ostream& operator<<(ostream& out, pair<T1, T2> &q){ out << q.F << " " << q.S; return out;}
template< typename T1, typename T2 > pair<T1, T2> operator+(pair<T1, T2> p1, pair<T1, T2> p2){ return {p1.F+p2.F, p1.S+p2.S};}
template< typename T1, typename T2 > pair<T1, T2> operator-(pair<T1, T2> p1, pair<T1, T2> p2){ return {p1.F-p2.F, p1.S-p2.S};}
template< typename T1, typename T2 > bool operator<(pair<T1, T2> p1, pair<T1, T2> p2){ return p1 < p2 ;}

template<typename T> void Unique(vector<T> &v) {
    sort(all(v)), v.resize(distance(v.begin(), unique(all(v))));
}

const int M = 1e9+7;

void solve() {
	int n, a, b;
	cin >> n >> a >> b;

	int tot = (n-a-b+1); 
	tot = max(tot, 0LL);
	tot *= (tot+1);
	tot %= M;
	int ans = tot*(n-b+1)%M*(n-a+1)%M;
	ans *= 2;
	ans %= M;
	cout << (ans-tot*tot%M+M)%M << endl;
}

signed main(){

    ios_base::sync_with_stdio(0); 
    cin.tie(0); cout.tie(0);   
    start = clock(); 

   

    int test = 1;
    cin >> test;
    
    cout << fixed << setprecision(20);
     
    for(int i = 1; i <= test; ++i){
    	solve();
    }

    cerr << time(start);
    return 0;
}

	
#include <bits/stdc++.h>
 
#define F first
#define S second
#define pb push_back
#define forn(i, n) for(int i = 0 ; (i) < (n) ; ++i)
#define eprintf(...) fprintf(stderr, __VA_ARGS__),fflush(stderr)
#define sz(a) ((int)(a).size())
#define all(a) (a).begin(),a.end()
#define pw(x) (1LL<<(x))
 
using namespace std;
 
typedef long long ll;
typedef double dbl;
typedef vector<int> vi;
typedef pair<int, int> pi;
 
const int inf = 1.01e9;
const dbl eps = 1e-9;
 
/* --- main part --- */
 
const int mod = 1e9 + 7;
 
int rev(int a, int m=mod)
{
    if (a == 1) return 1;
    return (1 - rev(m % a, a) * (ll)m) / a + m;
}
 
 
int cnk(int n, int k)
{
    int p = 1;
    int q = 1;
    forn(i, k)
    {
        p = p * (ll)(n - i) % mod;
        q = q * (ll)(i + 1) % mod;
    }
    return p * (ll)rev(q) % mod;
}
        
 
int main()
{
    #ifdef HOME
        assert(freopen("1.in", "r", stdin));
        assert(freopen("1.out", "w", stdout));
    #endif
    int tn;
    scanf("%d", &tn);
    forn(tt, tn)
    {
        int n, a, b;
        scanf("%d%d%d", &n, &a, &b);
        if (a + b > n)
        {
            printf("0\n");
            continue;
        }
        int res = 0;
        res = (res + cnk(n - a - b + 2, 2) * (ll)(n - a + 1) % mod * (n - b + 1) % mod * 2) % mod;
        res = (res + mod - cnk(n - a - b + 2, 2) * (ll)cnk(n - a - b + 2, 2) % mod * 2 % mod) % mod;
        res = res * 2 % mod;
        printf("%d\n", res);
    }
    #ifdef HOME
        eprintf("time = %d ms\n", (int)(clock() * 1000. / CLOCKS_PER_SEC));
    #endif
    return 0;
}