#CF2124E. 归零
归零
E. 归零
时间限制:2 秒
内存限制:256 兆字节
给定一个由正整数组成的数组 ,长度为 。你可以执行以下操作:
- 选择一个数组 ,满足以下性质:
- 对每个 ,有 。
- 存在一个下标 ,使得$$b_1 + b_2 + \dots + b_i = b_{i+1} + b_{i+2} + \dots + b_n. $$即长度为 的前缀和等于长度为 的后缀和。
- 然后,对每个 ,执行 。
你的目标是将所有元素变为 。求最少需要的操作次数。
然后,输出一种操作方案。如果无论如何操作都无法将 的所有元素变为 ,则输出 。可以证明,在本题的数据范围内,最少操作次数不超过 。
输入
每个测试包含多个测试用例。第一行包含测试用例数 ()。
每个测试用例的第一行包含一个整数 ()—— 数组 的长度。
第二行包含 个整数 ()—— 数组 。
保证所有测试用例的 之和不超过 。
输出
对于每个测试用例,如果无解,输出一行 -1。
否则,先输出一个整数 ()—— 最少操作次数。
然后输出 行,每行包含 个整数 (),表示每次操作对应的 数组。
执行完这些操作后, 的所有元素应变为 。
样例
输入
3
3
1 2 3
2
2 5
4
5 3 1 5
输出
1
1 2 3
-1
2
3 1 1 1
2 2 0 4
说明
- 第一个测试用例:可以直接选择 ,因为 。
- 第二个测试用例:可以证明无法将 的所有元素变为 。