#CF1753C. Wish I Knew How to Sort

Wish I Knew How to Sort

题目内容

给定一个长度为 nn 的二进制数组 aa(所有元素为 0011)。你想将这个数组排序,但不幸的是,你的算法老师忘记教你排序算法。你重复执行以下操作,直到数组变为非降序(即所有 00 在前,所有 11 在后):

  • 随机选择两个下标 iijj,满足 i<ji < j。所有满足 1i<jn1 \le i < j \le n 的下标对 (i,j)(i,j) 被选中的概率相等。
  • 如果 ai>aja_i > a_j,则交换 aia_iaja_j

求在数组变为有序之前,你所执行的操作次数的期望值。

可以证明答案可以表示为既约分数 pq\frac{p}{q},其中 ppqq 是整数且 q≢0(mod998244353)q \not\equiv 0 \pmod{998244353}。输出整数 pq1mod998244353p \cdot q^{-1} \bmod 998244353,即输出满足 0x<9982443530 \le x < 998244353xqp(mod998244353)x \cdot q \equiv p \pmod{998244353} 的整数 xx

输入

每个测试包含多个测试用例。第一行包含一个整数 tt1t1051 \le t \le 10^5)——测试用例的数量。接下来每个测试用例的描述如下:

  • 第一行包含一个整数 nn1n2×1051 \le n \le 2 \times 10^5)——数组的长度。
  • 第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_nai{0,1}a_i \in \{0,1\})——数组元素。

保证所有测试用例的 nn 之和不超过 2×1052 \times 10^5

输出

对于每个测试用例,输出一个整数——答案模 998244353998244353

样例

输入

3
3
0 1 0
5
0 0 1 1 1
6
1 1 1 0 0 1

输出

3
0
249561107

注意

在第一个测试用例中,如果选择下标对 (2,3)(2,3),则交换它们,数组变为有序。否则,如果选择 (1,2)(1,2)(1,3)(1,3),什么也不会发生。因此,一次操作后数组变为有序的概率为 13\frac{1}{3},两次操作后变为有序的概率为 2313\frac{2}{3} \cdot \frac{1}{3},依此类推。期望操作次数为 $\sum_{i=1}^{\infty} \left(\frac{2}{3}\right)^{i-1} \cdot \frac{1}{3} \cdot i = 3$。

第二个测试用例中,数组已经有序,所以期望操作次数为 00

第三个测试用例中,期望操作次数等于 754\frac{75}{4},所以答案为 7541249561107(mod998244353)75 \cdot 4^{-1} \equiv 249561107 \pmod{998244353}