#P1648. 平方数划分
平方数划分
Description
在数字王国中,存在着这样一个诅咒,如果两个数能够通过相加变成一个平方数,则会引来灾厄。Orange现在管理着一个 个数字构成的集合,为了避免集合中的元素产生灾厄,他需要将其划分成2份子集合,且保证这任意1份子集合内都满足不存在任意2数之和为一个平方数。
你需要告诉Orange是否存在一种划分方案能够满足要求。若存在,请输出任意一种划分方案。
平方数:可以被表示成某个自然数平方形式的数。
Format
Input
输入包含多组测试数据。
第1行为一个整数T,表示测试数据组数。
对于每组测试数据:
第1行为1个整数n,表示集合大小。
第2行为n个整数 ,表示集合中元素。
你应该注意的是,集合中不包含重复元素。
数据范围
对于 20 % 的数据:
对于所有数据:
Output
对于每个测试数据,若可以满足划分,则输出一行Yes,然后在第2行输出n和m,表示划分的子集1和子集2的大小,并在第3行和第4行分别输出子集合1和子集合2的元素。否则仅输出一行No即可。你只要输出任意一种满足条件的划分均可。
Samples
2
5
1 2 3 4 5
3
6 19 30
Yes
3 2
1 2 4
3 5
No