#include "bits/stdc++.h"
using namespace std;
#define ll long long int
#define nl '\n'
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define all(a) a.begin(),a.end()
const ll N=4e6+9;
const ll mod=1e9+7;
ll powerk(ll x, ll y);
ll a[N];
void pre()
{
a[0]=1;
a[1]=1;
rep(i,2,4000006)
{
a[i] = (a[i-1]*i)%mod;
}
}
int main() {
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
ll n;
pre();
cin>>n;
while(n--)
{
ll aa,b,c,d;
cin>>aa>>b>>c>>d;
ll x = abs(c-aa)+1;
ll y = abs(d-b)+1;
cout<< (a[x+y-2]*(powerk((a[x-1]*a[y-1])%mod,mod-2)))%mod<<nl;
}
}
ll powerk(ll x, ll y)
{
if(y==0)return 1;
if(y==1)return x%mod;
if(y&1)
return ((powerk((x*x)%mod, y/2)%mod)*x)%mod;
else return powerk((x*x)%mod,y/2)%mod;
}
I2luY2x1ZGUgImJpdHMvc3RkYysrLmgiCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGxsIGxvbmcgbG9uZyBpbnQKI2RlZmluZSBubCAnXG4nCiNkZWZpbmUgcmVwKGksYSxiKSBmb3IoaW50IGk9YTtpPD1iOysraSkKI2RlZmluZSBhbGwoYSkgYS5iZWdpbigpLGEuZW5kKCkKY29uc3QgbGwgTj00ZTYrOTsKY29uc3QgbGwgbW9kPTFlOSs3OwoKbGwgcG93ZXJrKGxsIHgsIGxsIHkpOwoKbGwgYVtOXTsKCnZvaWQgcHJlKCkKewogICAgYVswXT0xOwogICAgYVsxXT0xOwogICAgcmVwKGksMiw0MDAwMDA2KQogICAgewogICAgICAgIGFbaV0gPSAoYVtpLTFdKmkpJW1vZDsKICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCk7CiAgICBsbCBuOwogICAgcHJlKCk7CiAgICBjaW4+Pm47CiAgICB3aGlsZShuLS0pCiAgICB7CiAgICAgICAgbGwgYWEsYixjLGQ7CiAgICAgICAgY2luPj5hYT4+Yj4+Yz4+ZDsKICAgICAgICBsbCB4ID0gYWJzKGMtYWEpKzE7CiAgICAgICAgbGwgeSA9IGFicyhkLWIpKzE7CgogICAgICAgIGNvdXQ8PCAoYVt4K3ktMl0qKHBvd2VyaygoYVt4LTFdKmFbeS0xXSklbW9kLG1vZC0yKSkpJW1vZDw8bmw7CiAgICB9Cn0KCmxsIHBvd2VyayhsbCB4LCBsbCB5KQp7CiAgaWYoeT09MClyZXR1cm4gMTsKICBpZih5PT0xKXJldHVybiB4JW1vZDsKICBpZih5JjEpCiAgICByZXR1cm4gKChwb3dlcmsoKHgqeCklbW9kLCB5LzIpJW1vZCkqeCklbW9kOwogIGVsc2UgcmV0dXJuIHBvd2VyaygoeCp4KSVtb2QseS8yKSVtb2Q7Cn0=