#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int mod=1e9+7;
ll exponentiation(ll base,ll power)
{
ll ans=1;
while(power>0)
{
if(power%2==1)
ans=(ans*base)%mod;
base=(base*base)%mod;
power/=2;
}
return ans%mod;
}
ll inverse_mod(ll exp,ll base){ return (exp%mod*(exponentiation(base,mod-2))%mod)%mod; }
ll factorial[1000100];
ll binomial(ll a,ll b)
{
ll top=factorial[a];
ll below=factorial[b];
below=(below*factorial[a-b])%mod;
ll ans=inverse_mod(top,below);
return ans;
}
int main()
{
factorial[0]=factorial[1]=1;
for(ll i=2;i<1000100;i++)
factorial[i]=(i*factorial[i-1])%mod;
long long int ans=0,t,x1,x2,y1,y2;
cin>>t;
for(int j=1;j<=t;j++)
{
ans=0;
cin>>x1>>y1>>x2>>y2;
for(int i=0;i<=min(x2-x1,y2-y1);i++)
{
ll firstpart=(binomial(x2-x1+y2-y1-2*i,y2-y1-i));
ll secondpart=binomial(x2-x1+y2-y1-i,i);
ll temp=(firstpart*secondpart*1LL)%mod;
ans=(ans+temp)%mod;
}
cout<<"Case "<<j<<": "<<ans<<endl;
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBsbCBsb25nIGxvbmcKY29uc3QgaW50IG1vZD0xZTkrNzsKbGwgZXhwb25lbnRpYXRpb24obGwgYmFzZSxsbCBwb3dlcikKewogICAgbGwgYW5zPTE7CiAgICB3aGlsZShwb3dlcj4wKQogICAgewogICAgICAgaWYocG93ZXIlMj09MSkKICAgICAgICAgICAgYW5zPShhbnMqYmFzZSklbW9kOwogICAgICAgYmFzZT0oYmFzZSpiYXNlKSVtb2Q7CiAgICAgICBwb3dlci89MjsKICAgIH0KICAgIHJldHVybiBhbnMlbW9kOwp9CiAKbGwgaW52ZXJzZV9tb2QobGwgZXhwLGxsIGJhc2UpeyByZXR1cm4gKGV4cCVtb2QqKGV4cG9uZW50aWF0aW9uKGJhc2UsbW9kLTIpKSVtb2QpJW1vZDsgfQpsbCBmYWN0b3JpYWxbMTAwMDEwMF07CmxsIGJpbm9taWFsKGxsIGEsbGwgYikKewogICAgbGwgdG9wPWZhY3RvcmlhbFthXTsKICAgIGxsIGJlbG93PWZhY3RvcmlhbFtiXTsKICAgIGJlbG93PShiZWxvdypmYWN0b3JpYWxbYS1iXSklbW9kOwogICAgbGwgYW5zPWludmVyc2VfbW9kKHRvcCxiZWxvdyk7CiAgICByZXR1cm4gYW5zOwp9CiAKaW50IG1haW4oKQp7CiAgICBmYWN0b3JpYWxbMF09ZmFjdG9yaWFsWzFdPTE7CiAgICBmb3IobGwgaT0yO2k8MTAwMDEwMDtpKyspCiAgICAgICAgZmFjdG9yaWFsW2ldPShpKmZhY3RvcmlhbFtpLTFdKSVtb2Q7CiAgICBsb25nIGxvbmcgaW50IGFucz0wLHQseDEseDIseTEseTI7CiAgICBjaW4+PnQ7CiAgICBmb3IoaW50IGo9MTtqPD10O2orKykKICAgIHsKICAgICAgICBhbnM9MDsKICAgICAgICBjaW4+PngxPj55MT4+eDI+PnkyOwogICAgICAgIGZvcihpbnQgaT0wO2k8PW1pbih4Mi14MSx5Mi15MSk7aSsrKQogICAgICAgIHsKICAgICAgICAgICAgbGwgZmlyc3RwYXJ0PShiaW5vbWlhbCh4Mi14MSt5Mi15MS0yKmkseTIteTEtaSkpOwogICAgICAgICAgICBsbCBzZWNvbmRwYXJ0PWJpbm9taWFsKHgyLXgxK3kyLXkxLWksaSk7CiAgICAgICAgICAgIGxsIHRlbXA9KGZpcnN0cGFydCpzZWNvbmRwYXJ0KjFMTCklbW9kOwogICAgICAgICAgICBhbnM9KGFucyt0ZW1wKSVtb2Q7CiAgICAgICAgfQogICAgICAgIGNvdXQ8PCJDYXNlICI8PGo8PCI6ICI8PGFuczw8ZW5kbDsKICAgIH0KcmV0dXJuIDA7Cn0KIA==