这是一个经典问题,所以我们长话短说。
给定一个包含 $n$ 个数的集合 $S$ 和一个素数 $p$,求所有满足 $\text{mex}(S_c)$ 最大的整数 $c$ ($0 \le c < p$),其中 $S_c = \{(c \cdot x) \pmod p \mid x \in S\}$。这里 $\text{mex}(S)$ 定义为不在 $S$ 中的最小非负整数。
输入格式
输入包含多组测试数据。
第一行包含一个整数 $T$,表示测试数据的组数。
对于每组测试数据,第一行包含两个整数 $n, p$ ($1 \le n \le p \le 2 \times 10^5$),分别表示集合的大小和素数。保证 $p$ 是一个素数。
接下来一行包含 $n$ 个整数,第 $i$ 个整数为 $a_i$ ($0 \le a_i < p$),表示集合中的一个元素。保证当 $i \neq j$ 时,$a_i \neq a_j$。
保证所有测试数据的 $p$ 之和不超过 $2 \times 10^5$。
输出格式
对于每组测试数据,第一行输出两个整数 $k, m$,分别表示满足条件的 $c$ 的个数以及最大的 mex 值。
在下一行输出 $k$ 个整数,按升序排列,表示所有可能的 $c$。
样例
样例输入 1
3 2 3 0 2 3 5 2 3 4 3 5 0 2 3
样例输出 1
1 2 2 1 1 0 2 2 2 3