【模板】原根

题目描述

给定整数 $n$,求它的所有原根。 为了减小你的输出量,给出输出参数 $d$,设 $n$ 的所有原根有 $c$ 个,从小到大分别为 $g_1,\ldots,g_c$,你只需要依次输出 $g_d,g_{2d},\ldots,g_{\lfloor\frac{c}{d}\rfloor\times d}$。 --- 如果你不了解原根的定义,可以自行查找资料或阅读下列定义: 正整数 $g$ 是正整数 $n$ 的原根,当且仅当 $1\leq g\leq n-1$,且 $g$ 模 $n$ 的阶为 $\varphi(n)$。

输入输出格式

输入格式


**本题包含多组数据**。 第一行:一个整数 $T$,表示数据组数。 接下来 $T$ 行:每行两个整数 $n,d$,表示一组询问数据。

输出格式


对于每组数据: 第一行输出一个整数 $c$,表示 $n$ 的原根个数,第二行输出 $\lfloor\dfrac{c}{d}\rfloor$ 个数,按照题目描述中要求输出。 注意:即使 $\lfloor\dfrac{c}{d}\rfloor=0$,也需要输出一个空行。

输入输出样例

输入样例 #1

6
2 1
4 1
25 2
36 1
9 6
18 1

输出样例 #1

1
1 
1
3 
8
3 12 17 23 
0

2

2
5 11 

说明

【样例解释】 对于第 $1,2,4,6$ 组数据,给出的 $n$ 的所有原根都出现在输出中。 对于第 $3$ 组数据,$25$ 的原根集合为 $\{2,3,8,12,13,17,22,23\}$。 对于第 $5$ 组数据,$9$ 的原根集合为 $\{2,5\}$。 【数据范围】 对于 $100\%$ 的数据,$1\leq T\leq 10$,$2\leq n\leq 10^6$,$1\leq d\leq 200$,保证输出的数的总个数不超过 $10^5$。