#include <cmath> #include <cstdio> #include <vector> #include <iostream> #include <algorithm> using namespace std; typedef long long ll; const int md = 1000000007; const int maxc = 2000010; ll fact[maxc], invf[maxc]; ll binpow(ll a, ll b) { ll res = 1; for (; b > 0; b >>= 1) { if (b & 1) res = res * a % md; a = a * a % md; } return res; } ll C(int n, int m) { return (fact[n] * invf[m] % md) * invf[n-m] % md; } ll get(int ti, int tj, int fi, int fj) { int A = fi - ti; int B = fj - tj; return C(A + B, B); } void solve() { int r, c, r1, c1, r2, c2; scanf("%d %d", &r, &c); scanf("%d %d %d %d", &r1, &c1, &r2, &c2); ll ans = 0; if (c2 < c) for (int ri = 1; ri < r1; ri++) ans = (ans + get(1, 1, ri, c2) * get(ri, c2 + 1, r, c)) % md; if (c1 > 1) for (int ri = r2 + 1; ri <= r; ri++) ans = (ans + get(1, 1, ri, c1 - 1) * get(ri, c1, r, c)) % md; cout << ans % md << endl; } int main() { fact[0] = invf[0] = 1; for (int i = 1; i <= 2000000; i++) { fact[i] = fact[i-1] * i % md; invf[i] = binpow(fact[i], md - 2); } //cout << get(1, 1, 2, 2) << endl; //return 0; int tc; scanf("%d", &tc); while (tc--) solve(); return 0; }