四值零和
时间限制:C/C++/Rust/Pascal 5秒,其他语言10秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}本题翻译自 [UVALive3506 / poj 2785] 4 Values whose Sum is 0 。
\hspace{15pt}对于给定的 n4 列的矩阵,我们定义一个“四值零和”的四元组 \{a,b,c,d\} 为第一列第 a 行、第二列第 b 行、第三列第 c 行、第四列第 d 行的元素,满足这四个元素之和恰好为 0
\hspace{15pt}请统计出该矩阵中有多少个不同的“四值零和”的四元组 。

输入描述:

\hspace{15pt}第一行输入一个整数 n \left(1 \leq n \leq 2500 \right) 代表矩阵行数。
\hspace{15pt}此后 n 行,第 i 行输入四个整数 a_{i, 1}, a_{i, 2}, a_{i, 3}, a_{i, 4} \left( -2^{28} \leq a_{i, j} \leq 2^{28} \right) 代表矩阵中第 i 行的四个元素。

输出描述:

\hspace{15pt}在一行上输出一个整数,代表“四值零和”的四元组数量。
示例1

输入

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

输出

复制
4

说明

\hspace{15pt}在这个样例中,只有 1+1+1-3 是等于 0 的。所以一共有四个不同的“四值零和”的四元组:\{1, 1, 1, 1\}\{1, 1, 2, 1\}\{1, 2, 1, 1\}\{1, 2, 2, 1\}
示例2

输入

复制
3
1 1 1 -3
-1 1 1 3
1 -1 1 3

输出

复制
12

说明

\hspace{15pt}在这个样例中,答案即为 2 \times 2 \times 3 \times 1 = 12
示例3

输入

复制
6
-45 22 42 -16
-41 -27 56 30
-36 53 -37 77
-36 30 -75 -46
26 -38 -10 62
-32 -54 -6 45

输出

复制
5