#CF2107A. LRC 与 VIP
LRC 与 VIP
每次测试时间限制:1 秒
每次测试内存限制:256 兆字节
题目描述
你有一个大小为 的数组 ,即 。
需要将 个元素划分成两个序列 和 ,满足以下条件:
- 每个元素恰好属于一个序列。
- 两个序列 和 都至少包含一个元素。
- $\gcd(B_1, B_2, \dots, B_{|B|}) \neq \gcd(C_1, C_2, \dots, C_{|C|})$。
这里 表示整数 和 的最大公约数。
输入格式
每个测试包含多个测试用例。
第一行包含一个整数 (),表示测试用例数量。
接下来每个测试用例的格式如下:
- 第一行包含一个整数 ()。
- 第二行包含 个整数 ()。
输出格式
对于每个测试用例:
- 第一行输出
Yes如果存在解,否则输出No。大小写不敏感,例如YES、yEs也可接受。 - 仅当存在解时,再在第二行输出 个整数,第 个数为 或 。
表示该元素属于序列 , 表示属于序列 。
必须保证 和 都至少出现一次。
示例
输入
3
4
1 20 51 9
4
5 5 5 5
3
1 2 2
输出
Yes
2 2 1 1
No
Yes
1 2 2
样例解释
在第一个测试用例中:
,。可以验证 。
在第二个测试用例中,不存在解。例如,若将前 个元素分给 ,最后一个给 ,则 ,,,不符合要求。
在第三个测试用例中,存在解。