编程题
### 题目大意
给定一个长度为 $n$ 只包含 $0$ 和 $1$ 字符的二进制数组 $a$,但是不幸的是,你不小心遗忘了蓝桥云课上学习过的排序算法。于是你决定按顺序执行以下操作直到 $a$ 是有序的。
+ 在所有满足 $1\leq i < j \leq n$ 的下标对 $(i,j)$ 中等概率选择一对下标 $i$ 和 $j$。
+ 如果 $a_i > a_j$,则交换 $a_i$ 和 $a_j$。
问题是数组排好序之前,你想知道以上操作的执行次数的期望是多少?
可以证明答案可以表示为不可约分数 $\frac{p}{q}$ , $p$ 和 $q$ 是两个整数并且 $q\not\equiv 0(\bmod 998244353)$。输出等于答案 $p \cdot q ^{-1} \bmod 998 244 353$ 的整数的值。换句话说,输出一个整数 $x$,满足 $0\leq x < 998244353$ 并且 $x \cdot q \equiv p(\bmod 998244353)$。
### 输入格式
每个测试都包含多个测试用例。
第一行包含测试用例数量 $T$。
每个测试用例的第一行包含一个整数 $n$,表示二进制数组中的元素数量。
每个测试用例的第二行包含 $n$ 个整数 $a_1,a_2,...,a_n$。
### 输出格式
对于每个测试用例,打印一个整数,也就是 $p\cdot q^{−1} \bmod 998244353 $ 的值。
### 样例输入
```txt
3
3
0 1 0
5
0 0 1 1 1
6
1 1 1 0 0 1
```
### 样例输出
```txt
3
0
249561107
```
### 评测数据规模
对于 $100$% 的评测数据,$1\leq T \leq 20,1 \leq N \leq 100000, a_i \in \left\{ 0, 1 \right\}$。