#CF1917A. A. 最小乘积

A. 最小乘积

A. 最小乘积
每个测试的时间限制:1 秒
内存限制:256 兆字节


题目描述

你有一个整数数组 a1,a2,,ana_1, a_2, \dots, a_n
你可以执行以下操作任意次数(包括零次):

  • 选择任意一个元素 aia_i,将其改为 00aia_i 之间的任意整数(包含端点)。
    更正式地说:
    • 如果 ai<0a_i < 0,则将 aia_i 改为 [ai,0][a_i, 0] 中的任意整数;
    • 否则,将 aia_i 改为 [0,ai][0, a_i] 中的任意整数。

rr 为执行任意次操作后,所有 aia_i 乘积的最小可能值。

请你找出使得乘积等于 rr 所需的最少操作次数,并输出其中一种最短的操作序列
如果有多组答案,输出任意一组即可。


输入格式

每个测试包含多个测试用例。
第一行包含一个整数 tt1t5001 \le t \le 500)—— 测试用例的数量。
接下来是每个测试用例的描述:

  • 每个测试用例的第一行包含一个整数 nn1n1001 \le n \le 100)—— 数组长度。
  • 第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n109ai109-10^9 \le a_i \le 10^9)。

输出格式

对于每个测试用例:

  • 第一行输出最少操作次数 kk0kn0 \le k \le n)。
  • 接下来的 kk 行,每行包含两个整数 iixx,表示一次操作:将 aia_i 替换为 xx

示例

输入:

4
1
155
4
2 8 -1 3
4
-1 0 -2 -5
4
-15 -75 -25 -30

输出:

1
1 0
0
0
1
3 0

样例解释

  • 第一个测试用例:将第一个数改为 00,乘积变为 00,这是可能的最小值。
  • 第二个测试用例:初始乘积 2×8×(1)×3=482 \times 8 \times (-1) \times 3 = -48 已经是最小值,因此不需要操作。