// @author cebrusfs // headers {{{ #include<bits/stdc++.h> using namespace std; // }}} // macros {{{ #ifdef WIN32 #define LLD "%I64d" #else #define LLD "%lld" #endif #define FOR(i,c) for(__typeof((c).begin()) i=(c).begin();i!=(c).end();i++) #define ALL(x) (x).begin(), (x).end() #define SZ(x) ((int)(x).size()) #define UNIQUE(x) ((x).erase(unique(ALL(x)), (x).end())) #define MS(x, v) std::fill(ALL(x), (v)); #define IOS ios_base::sync_with_stdio(false) #define REP(i,n) for(int i=0;i<(n);i++) #define REP1(i,a,b) for(int i=(a);i<=(b);i++) #define PER(i,n) for(int i=(n)-1;i>=0;i--) #define PER1(i,a,b) for(int i=(a);i>=(b);i--) #ifdef ONLINE_JUDGE #define FILEIO(x) freopen(#x ".in","r",stdin);freopen(#x ".out","w",stdout); #define FILEIOS freopen("input.txt","r",stdin);freopen("output.txt","w",stdout); #else #define FILEIO(x) ; #define FILEIOS ; #endif typedef unsigned int uint; typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef pair<int, int> PII; #define MP make_pair #define F first #define S second typedef vector<int> VI; #define PB push_back #define PF push_front #define PPB pop_back #define PPF pop_front // C++11 #if __cplusplus >= 201103L #define MT make_tuple typedef tuple<int, int> TII; #endif #define runtime() ((double)clock() / CLOCKS_PER_SEC) const double eps = 1e-7; // }}} #define MAX 2000005 const int MOD = (1e9 + 7); long long fac[MAX]; long long inv[MAX]; long long C(int n, int m) { return fac[n] * inv[m] % MOD * inv[n - m] % MOD; } long long powmod(int a, int b, int p) { if (b == 0) return 1 % p; long long v = powmod(a, b / 2, p); return v * v % MOD * (b % 2 == 1 ? a : 1) % MOD; } long long calinv(int val, int p) { return powmod(val, p - 2, p); } long long count(int n, int m) { if (n <= 0 or m <= 0) return 0; //printf("!%d %d\n", n, m); return C(n + m - 2, n - 1); } int main() { fac[0] = 1; for (int i = 1; i < MAX; ++i) fac[i] = fac[i - 1] * i % MOD; inv[MAX - 1] = calinv(fac[MAX - 1], MOD); for (int i = MAX - 2; i >= 0; --i) inv[i] = inv[i + 1] * (i + 1) % MOD; int z; scanf("%d", &z); while (z--) { int r, c, r1, r2, c1, c2; scanf("%d %d", &r, &c); scanf("%d %d %d %d", &r1, &c1, &r2, &c2); long long ans = 0; for (int i = 1; i < c1; ++i) ans += count(r2, i) * count(r - r2, c - i + 1), ans %= MOD; //printf("%lld\n", ans); for (int i = c2 + 1; i <= c; ++i) ans += count(r1 - 1, i) * count(r - r1 + 1, c - i + 1), ans %= MOD; printf("%lld\n", ans); } }