So We Back In The Mine
题号:NC200040
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

今晚是不同寻常的一晚,因为今晚是闪耀的钻石之夜 (the splendid diamonds night)!
在今晚,会有很多的钻石奇迹般地出现在地平线以下。

Vanis通过之前找到的地图,知道了钻石的出现情况,地图上说,如果将这个世界看做由一个个方块组成的,则可以从俯视地面的角度观察,以某块地面作为了坐标原点,之后以这块地面的正北方向作为y轴,以这块地面正东方向作为x轴,之后每块地面刚好有唯一的整数坐标与之对应,如作为坐标原点的地面方块的坐标为,其正东方向与正北方向相邻的地面方块坐标分别为。如下图所示:



坐标为的地面下,会产生块钻石(其中为最大值函数,取值为a与b二者中较大者。|a|表示取a的绝对值),Vanis想知道以为左下角坐标、以为右上角坐标所构成的矩形区域内的地下一共产生了多少块钻石。

形式化地说,坐标为的地面下会产生块钻石,Vanis想知道函数的值。

举个例子,如下图所示:


红色区域对应查询,查询结果为21。
黄色区域对应查询,查询结果为22。
蓝色区域对应查询,查询结果为6。

输入描述:

第一行输入一个正整数q,表示总共会有q次询问。
之后输入q行,表示每次询问。每一行输入四个整数,依次是x_1, y_1,x_2,y_2,之间使用一个空格符分隔,表示要查询钻石数的矩形区域。

数据规范:
* .
* .
* .
* .
* 保证所有输入的数都是整数。

输出描述:

对于每行询问,依次输出询问区域内的钻石数,使用一个整数表示,每个输出占一行。

注意用来存储答案的变量的数据类型,不能使用32位整型。
如果您使用C、C++,不能使用int类型(32位整型),请使用long long int类型(64位整型)。
如果您使用Java,不能使用int类型(32位整型),请使用long类型(64位整型)。
如果您使用Python2、Python3,请随意。。。
示例1

输入

复制
3
0 0 0 0
1 1 2 2
-2 -2 -1 -1

输出

复制
1
11
11
示例2

输入

复制
5
-20000 -20000 20000 -1
-20000 0 20000 20000
-20000 -20000 -1 20000
0 -20000 20000 20000
-20000 -20000 20000 20000

输出

复制
10668066690000
10668466750001
10668066690000
10668466750001
21336533440001

备注:

有大量输入,请至少使用scanf或更高效的输入方式,否则你的程序可能会因为读入开销而超时(TLE)。
如果你使用C++的cin和cout进行读入输出,请:

关闭流同步与刷新(注意:关闭之后不能再使用scanf、printf、getchar、putchar、puts等C输入输出函数),并且避免手动使用endl进行缓冲区刷新,在main函数内部最开头添加两行代码,如下:

#include <iostream>
using namespace std;
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL), cout.tie(NULL);

return 0;
}