绝对零度
时间限制:2 秒
空间限制:256 MB
给定一个包含 n 个整数的数组 a。
在一次操作中,你需要执行以下两步:
- 选择一个整数 x(0≤x≤109)。
- 将每个 ai 替换为 ∣ai−x∣,其中 ∣v∣ 表示 v 的绝对值。
例如,选择 x=8 后,数组 [5,7,10] 会变成 [∣5−8∣,∣7−8∣,∣10−8∣]=[3,1,2]。
请你构造一个操作序列,在最多 40 次操作内将 a 的所有元素变为 0,或者判断这不可能。你不需要最小化操作次数。
输入格式
第一行包含一个整数 t(1≤t≤104)—— 测试数据的组数。
每组测试数据包含两行:
- 第一行包含一个整数 n(1≤n≤2⋅105)—— 数组长度。
- 第二行包含 n 个整数 a1,a2,…,an(0≤ai≤109)。
保证所有测试数据的 n 之和不超过 2⋅105。
输出格式
对于每组测试数据,若不可能在 40 次操作内将所有元素变为 0,输出一行 -1。
否则,输出两行:
- 第一行包含一个整数 k(0≤k≤40)—— 操作次数。
- 第二行包含 k 个整数 x1,x2,…,xk(0≤xi≤109)—— 操作序列,表示第 i 次操作选择的 x=xi。
若存在多种方案,任意输出一种均可。操作次数不需要最小化。
样例输入
5
1
5
2
0 0
3
4 6 8
4
80 40 20 10
5
1 2 3 4 5
样例输出
1
5
0
3
6 1 1
7
60 40 20 10 30 25 5
-1
样例解释
- 第一组:选择 x=5,数组 [5] 变为 [0]。
- 第二组:数组元素已全为 0,无需操作。
- 第三组:依次选择 x=6,1,1,数组变化:[4,6,8]→[2,0,2]→[1,1,1]→[0,0,0]。
- 第四组:给出的序列可将数组全变 0。
- 第五组:可以证明无法在 40 次操作内全变 0,输出
-1。