#CF1420B. B. 岩石与杠杆

B. 岩石与杠杆

每个测试点时间限制:11 秒 内存限制:256256 兆字节

题目描述

“你必须举起大坝。用一根杠杆。我会把它给你。 你必须堵住运河。用一块岩石。我不会把岩石给你。”

丹尼克急需岩石和杠杆!显然,最简单的方法是向隐士蜥蜴求助。

隐士蜥蜴同意把杠杆给丹尼克。但要得到石头,丹尼克需要解决以下任务。

给你一个正整数 nn 和一个由正整数组成的数组 aa。任务是计算满足 i<ji < jaiai&ajaiaja_j \ge a_i \oplus a_j 的数对 (i,j)(i, j) 的数量,其中 & 表示按位与运算,\oplus 表示按位异或运算。

丹尼克已经解决了这个任务。你能解决吗?

输入格式

每个输入包含多个测试用例。

第一行包含一个正整数 tt1t101 \le t \le 10),表示测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含一个正整数 nn1n1051 \le n \le 10^5)——数组的长度。

第二行包含 nn 个正整数 aia_i1ai1091 \le a_i \le 10^9)——数组的元素。

保证所有测试用例的 nn 之和不超过 10510^5

输出格式

对于每个测试用例,输出一个非负整数——问题的答案。

5
5
1 4 3 7 10
3
1 1 1
4
6 2 5 3
2
2 4
1
1
1
3
2
0
0

数据规模与约定

在第一个测试用例中,只有一个有效数对:(4,7)(4,7),因为 44&7=4$,44 \oplus 7 = 3$。

在第二个测试用例中,所有数对都是有效的。

在第三个测试用例中,有两个有效数对:(6,5)(6,5)(2,3)(2,3)

在第四个测试用例中,没有有效数对。