import java.io.OutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashSet; import java.util.StringTokenizer; import java.io.Writer; import java.io.OutputStreamWriter; import java.io.BufferedReader; import java.io.InputStream; /** * Built using CHelper plug-in * Actual solution is at the top * * @author lewin */ public class atok_lewin { public static void main(String[] args) { InputStream inputStream = System.in; OutputStream outputStream = System.out; InputReader2 in = new InputReader2(inputStream); OutputWriter out = new OutputWriter(outputStream); AnotherTokenGame2 solver = new AnotherTokenGame2(); solver.solve(1, in, out); out.close(); } static class AnotherTokenGame2 { int n = 301; int[][] tab; void makeTable() { tab = new int[n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (Math.abs(i - j) <= 1) tab[i][j] = -1; else { HashSet sn = new HashSet<>(); for (int k = 0; k < i; k++) sn.add(tab[k][j]); for (int k = 0; k < j; k++) sn.add(tab[i][k]); while (sn.contains(tab[i][j])) tab[i][j]++; } } } } boolean win(int xi, int xj, int yi, int yj) { return (Math.abs(xi - yi) + Math.abs(xj - yj) > 1 && (tab[xi][yi] == -1 || tab[xj][yj] == -1 || tab[xi][yi] != tab[xj][yj])); } public void solve(int testNumber, InputReader2 in, OutputWriter out) { int t = in.nextInt(); makeTable(); while (t-- > 0) { int a = in.nextInt()-1, b = in.nextInt()-1, c = in.nextInt()-1, d = in.nextInt()-1; int win = 0; for (int g = a - 1; g >= 0 && (g != c || b != d); g--) if (!win(g, b, c, d)) win++; for (int g = b - 1; g >= 0 && (a != c || g != d); g--) if (!win(a, g, c, d)) win++; for (int g = c - 1; g >= 0 && (a != g || b != d); g--) if (!win(a, b, g, d)) win++; for (int g = d - 1; g >= 0 && (a != c || b != g); g--) if (!win(a, b, c, g)) win++; out.println(win); } } } static class InputReader2 { private BufferedReader in; private StringTokenizer st; public InputReader2(InputStream stream) { in = new BufferedReader(new InputStreamReader(stream)); st = null; } public int nextInt() { return Integer.parseInt(next()); } public String next() { while (st == null || !st.hasMoreTokens()) { try { st = new StringTokenizer(in.readLine()); } catch (IOException e) { e.printStackTrace(); } } return st.nextToken(); } } static class OutputWriter { private final PrintWriter writer; public OutputWriter(OutputStream outputStream) { writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream))); } public OutputWriter(Writer writer) { this.writer = new PrintWriter(writer); } public void close() { writer.close(); } public void println(int i) { writer.println(i); } } }