余配(rpai)

题目描述

Y 同学有一个长度为 nn 的非负整数序列 a1,a2,,ana_1,a_2,\ldots,a_n 和一个正整数 kk。他想从中选出两个不同的位置 i,ji,j,满足 1i<jn1 \le i < j \le n,并且 ai+aja_i+a_j 能被 kk 整除。

现在给定多组数据,请你分别求出满足条件的下标对数量。

输入格式

第一行包含一个整数 TT,表示测试组数。

对于每组测试数据,第一行包含两个整数 n,kn,k

第二行包含 nn 个整数 a1,a2,,ana_1,a_2,\ldots,a_n

输出格式

对每组测试数据,输出一行一个整数,表示满足条件的下标对数量。

样例

样例输入 #1

2
5 4
1 3 2 6 5
5 3
1 2 3 4 5

样例输出 #1

3
4

数据范围与约定

对于 100%100\% 的数据,保证 1T2×1051 \le T \le 2\times 10^51n2×1051 \le \sum n \le 2\times 10^51k1091 \le k \le 10^90ai1090 \le a_i \le 10^9

测试点编号 分值 n\sum n \le kk \le aia_i \le 特殊性质
121 \sim 2 1010 20002000 100100 10610^6
353 \sim 5 1515 10510^5 22 10910^9 特殊性质 A
686 \sim 8 10910^9 特殊性质 B
9129 \sim 12 2020 5×1045\times 10^4
131613 \sim 16 10510^5
172017 \sim 20 2×1052\times 10^5
  • 特殊性质 A:保证 k=2k=2
  • 特殊性质 B:保证所有 ai<ka_i<k