#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;

typedef int _loop_int;
#define REP(i,n) for(_loop_int i=0;i<(_loop_int)(n);++i)
#define FOR(i,a,b) for(_loop_int i=(_loop_int)(a);i<(_loop_int)(b);++i)
#define FORR(i,a,b) for(_loop_int i=(_loop_int)(b)-1;i>=(_loop_int)(a);--i)

#define DEBUG(x) cout<<#x<<": "<<x<<endl
#define DEBUG_VEC(v) cout<<#v<<":";REP(i,v.size())cout<<" "<<v[i];cout<<endl
#define ALL(a) (a).begin(),(a).end()

#define CHMIN(a,b) a=min((a),(b))
#define CHMAX(a,b) a=max((a),(b))

// 逮捕されそう

int ans[8][8][8][8];
int psum[9][9];

const int BLACK = 1;
const int WHITE = 2;
const int NONE = 0;
const int dx[] = {1,0,-1,0,1,1,-1,-1};
const int dy[] = {0,1,0,-1,1,-1,-1,1};
void debugBoard(const vi &m){
  puts("========");
  REP(i,8){
    REP(j,8)putchar(m[8*i+j]==BLACK ? '#' : (m[8*i+j]==WHITE ? '.' : ' '));
    puts("");
  }
  puts("========");
}
void dfs(const vi &m){  // turn is black
  // debugBoard(m);
  // othello
  bool update = false;
  REP(i,8)REP(j,8)if(m[8*i+j]==NONE){
    bool ok = false;
    REP(dir,8){
      int ci = i, cj = j;
      ci += dy[dir]; cj += dx[dir];
      if(ci<0||cj<0||ci>=8||cj>=8)continue;
      if(m[8*ci+cj]!=WHITE)continue;
      bool sok = true;
      while(true){
        ci += dy[dir]; cj += dx[dir];
        if(ci<0||cj<0||ci>=8||cj>=8){
          sok = false; break;
        }
        if(m[8*ci+cj]==NONE){
          sok = false; break;
        }
        if(m[8*ci+cj]==BLACK){
          sok = true; break;
        }
      }
      if(sok)ok = true;
    }
    if(!ok)continue;
    vi nm = m;
    update = true;
    nm[8*i+j] = BLACK;
    REP(dir,8){
      int ci = i, cj = j;
      ci += dy[dir]; cj += dx[dir];
      if(ci<0||cj<0||ci>=8||cj>=8)continue;
      if(m[8*ci+cj]!=WHITE)continue;
      bool sok = true;
      while(true){
        ci += dy[dir]; cj += dx[dir];
        if(ci<0||cj<0||ci>=8||cj>=8){
          sok = false; break;
        }
        if(m[8*ci+cj]==NONE){
          sok = false; break;
        }
        if(m[8*ci+cj]==BLACK){
          sok = true; break;
        }
      }
      if(sok){
        int ci = i, cj = j;
        ci += dy[dir]; cj += dx[dir];
        while(true){
          nm[8*ci+cj] = BLACK;
          ci += dy[dir]; cj += dx[dir];
          if(m[8*ci+cj]==BLACK)break;
        }
      }
    }
    REP(i,64){
      if(nm[i]==WHITE)nm[i]=BLACK;
      else if(nm[i]==BLACK)nm[i]=WHITE;
    }
    dfs(nm);
  }
  if(!update){
    debugBoard(m);
    // update ans
    REP(i,8)REP(j,8)psum[i+1][j+1] = m[8*i+j]!=NONE;
    REP(i,9)REP(j,8)psum[i][j+1] += psum[i][j];
    REP(i,8)REP(j,9)psum[i+1][j] += psum[i][j];
    REP(a,8)REP(b,8)FOR(c,a,8)FOR(d,b,8){
      CHMAX(ans[a][b][c][d], psum[c+1][d+1]-psum[a][d+1]-psum[c+1][b]+psum[a][b]);
    }
  }
}

int main(){
  // コンテスト中にオセロ書いた人の気持ちを分かって
  // // precalc
  // vi init(64,NONE);
  // init[3*8+3] = WHITE;
  // init[3*8+4] = BLACK;
  // init[4*8+4] = WHITE;
  // dfs(init);

  REP(i,8)REP(j,8)if(i%2==1 || j%2==0){
    psum[i+1][j+1]++;
  }
  REP(i,9)REP(j,8)psum[i][j+1] += psum[i][j];
  REP(i,8)REP(j,9)psum[i+1][j] += psum[i][j];

  int q;
  scanf("%d",&q);
  while(q--){
    int a,b,c,d;
    scanf("%d%d%d%d",&a,&b,&c,&d);--a;--b;--c;--d;
    printf("%d\n",psum[c+1][d+1]-psum[a][d+1]-psum[c+1][b]+psum[a][b]);
  }
  return 0;
}



Measured memory_bytes: 3228