数的和与积
题号:NC235945
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

给定一个 n ,请你将 1n 中的所有整数划分为两个集合,使得第一个集合里的数的积等于第二个集合里的数的和。
输出第一个集合的数。无解输出 -1

输入描述:

第一行一个 T 表示数据组数。
接下来 T 行,每行一个数 nn 的含义与题意描述中的一致。
,

输出描述:

对于每组数据,若无解,输出一行一个 -1
若有解,输出两行,第一行输出一个数m表示你所得到的第一个集合的数的个数。
第二行输出m个数,用空格隔开,表示第一个集合里的数。
输出的数必须互不相同,但是可以不按照升序排列。
示例1

输入

复制
4
3 
2
10
11

输出

复制
1
3
-1
2
6 7
3
1 5 10

说明

第一组:3=1+2
第三组:6\times 7=1+2+3+4+5+8+9+10