2098. 田字格 / Tian

小 I 正在学习练字,可当他打开白纸时才想起来自己之前无聊在白纸上将 n 条线段涂黑了,纸上其他部分都是白的。

n 条被涂黑的线段都是水平的或者竖直的:以白纸中心为原点,平行白纸的某条边构建 x 轴,另一条边构建 y 轴,那么每条被涂黑的线段的两个端点 (x_1,y_1)(x_2,y_2) 满足:x_1 = x_2y_1 = y_2 恰有一个成立。同时,任意两条水平的线段没有交点,任意两条竖直的线段没有交点。

尽管涂黑的线段很让小 I 糟心,深谙福祸相依的小 I 还是发现,涂黑的 n 条线段构成了若干田字格,而他可以在这些田字格上练字。

田字格可以由三元组 (x_0, y_0, d) 描述。一个三元组 (x_0, y_0, d) 是田字格当且仅当以下条件成立:

  • x_0, y_0 \in \mathbb{R}, d \in \mathbb{R}^+
  • R = [x_0-d,x_0+d] \times [y_0-d,y_0+d],即横坐标在 [x_0-d,x_0+d] 内、纵坐标在 [y_0-d,y_0+d] 内的所有点。那么 R 中被涂黑的部分恰好构成六条线段,且这六条线段分别是 x=x_0-d,x=x_0,x=x_0+d,y=y_0-d,y=y_0,y=y_0+d 这六条直线与 R 的交。

小 I 于是想想算算白纸上有几个田字格,也就是有多少个满足以上条件的三元组 (x_0,y_0,d)。但按照惯例小 I 不会算,所以这个任务交给了你。

输入

输入的第一行一个整数 n (1 \le n \le 3 \times 10^5) 表示线段数。接下来 n 行每行四个整数 x_1,y_1,x_2,y_2 (-10^9 \le x_1 \le x_2 \le 10^9, -10^9 \le y_1 \le y_2 \le 10^9) 表示一条线段。

输入的每条线段满足 x_1 = x_2y_1 = y_2 恰有一个成立,且任意两条满足 x_1 = x_2 的线段间没有交点,任意两条满足 y_1 = y_2 的线段间没有交点。

输出

输出一行一个整数表示田字格的数量。

样例

标准输入 复制文本
10
-10 -10 -10 10
0 -10 0 10
10 -10 10 10
-10 -10 10 -10
-10 0 10 0
-10 10 10 10
5 -10 5 10
-10 5 10 5
-2 0 -2 10
-5 -5 10 -5
标准输出 复制文本
3

提示

如上图所示,(5, 5, 5), (5, 0, 5), (5, -5, 5) 是三个合法的田字格。注意以下几个都不是田字格:

  • (0, 0, 10),因为除了需要的六条线段以外还有其他部分被涂黑了;
  • (-5, 5, 5),因为 x=-5 与正方形的交没有被涂黑。

登录以提交代码。
单点时限 3 秒
内存限制 512 MB
提交 2
通过 1