#P12829. 取模

取模

取模

Problem Description

给定一个长为 nn 的数组 a1,a2,,ana_1,a_2,\dots, a_n,其中 0aim0\leq a_i \leq m。你需要找到所有整数 k1k\ge 1,使得可重集 {a1modk,a2modk,anmodk}\{a_1 \bmod k,a_2 \bmod k,\dots a_n \bmod k\} 中刚好有 cc 种不同的数,且每种数刚好出现 nc\frac{n}{c} 次。如果存在无数个满足条件的 kk,输出 1-1

Input

第一行包含一个整数 TT1T1041\leq T \leq 10^4),表示一共有 TT 组测试数据。 对于每组测试数据: 第一行为三个整数 n,m,cn,m,c1n,m5105,1cmin(n,100)1\leq n,m\leq 5\cdot 10^5,1\leq c\leq \min(n,100)),表示数组 aa 中数的个数,数组 aa 中数的上限和取模后数组 aa 中不同数的种类数。保证 nc\frac{n}{c} 是一个整数。 第二行为 nn 个整数 a1,a2,ana_1,a_2,\dots a_n0aim0\leq a_i \leq m),表示数组 aa。 保证所有测试数据的 nn 之和不超过 21062 \cdot 10^6,保证所有测试数据的 mm 之和不超过 21062\cdot 10^6

Output

对于每组测试数据,如果存在无数个满足条件的 kk,输出 1-1。否则,先输出一个正整数 cntcnt,表示满足条件的 kk 的总数,然后在同一行中按从小到大的顺序输出 cntcnt 个数,表示所有满足条件的 kk

Sample Input

5
6 3 3
0 0 3 3 3 3
6 3 2
0 0 0 3 3 3
6 100 3
18 91 32 43 14 57
4 8 2
2 7 1 8
10 10 5
3 1 4 1 5 9 2 6 5 3

Sample Output

0
-1
2 3 7
3 2 3 6
0

Source

2025“钉耙编程”中国大学生算法设计暑期联赛(6)