#CF1984C2. 大小(困难版)

大小(困难版)

C2. 大小(困难版)

  • 时间限制:每个测试点 22
  • 内存限制:每个测试点 256256 兆字节

本题的简单版和困难版有所不同。建议你阅读两个版本。只有两个版本都通过时,你才能进行hack。

给定一个长度为 nn 的数组 aa。初始时 c=0c = 0。然后,对于 ii11nn(按递增顺序),恰好执行以下操作之一:

  • 选项 1:将 cc 变为 c+aic + a_i
  • 选项 2:将 cc 变为 c+ai|c + a_i|,其中 x|x| 表示 xx 的绝对值。

设上述过程结束后 cc 可能达到的最大值为 kk。求有多少种不同的操作序列使得最终 c=kc = k。如果两个操作序列在某一个下标 ii 处一个选择了选项 1 而另一个选择了选项 2(即使在该步之后 cc 的值相等),则认为它们不同。

由于答案可能很大,请对 998244353998244353 取模后输出。

输入

第一行包含一个整数 tt1t1041 \le t \le 10^4)——测试用例的数量。

每个测试用例的第一行包含一个整数 nn2n2×1052 \le n \le 2 \times 10^5)。

每个测试用例的第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n109ai109-10^9 \le a_i \le 10^9)。

所有测试用例的 nn 之和不超过 3×1053 \times 10^5

输出

对于每个测试用例,输出一个整数 —— 使得最终 c=kc = k 的不同操作序列的数量,对 998244353998244353 取模。

示例

输入

5
4
2 -5 3 -3
8
1 4 3 4 1 4 3 4
3
-1 -2 -3
4
-1000000000 1000000000 1000000000 1000000000
4
1 9 8 4

输出

12
256
1
8
16

在第一个测试用例中,可以证明最大可能的最终 cc 值为 33。有 1212 种操作序列可以达到 33,因为为了得到 33,我们必须在索引 2244 处(或两者都)取绝对值,这有 33 种方式。对于另外两个索引,无论取绝对值还是不取,都不会改变 cc 的值,因此它们各有 22=42 \cdot 2 = 4 种方式。总共 34=123 \cdot 4 = 12 种方式。

在第二个测试用例中,取绝对值永远不会改变任何值,因此对于每个索引,我们可以选择取绝对值或不取。这给出 28=2562^8 = 256 种可能的方式。