← Home
```go
package main

import (
	"bufio"
	"fmt"
	"io"
	"os"
)

const MOD int64 = 998244353

func main() {
	data, _ := io.ReadAll(os.Stdin)
	idx := 0
	nextInt := func() int {
		sign := 1
		val := 0
		n := len(data)
		for idx < n && (data[idx] < '0' || data[idx] > '9') && data[idx] != '-' {
			idx++
		}
		if idx < n && data[idx] == '-' {
			sign = -1
			idx++
		}
		for idx < n && data[idx] >= '0' && data[idx] <= '9' {
			val = val*10 + int(data[idx]-'0')
			idx++
		}
		return val * sign
	}

	t := nextInt()
	const MAXN = 200000
	inv := make([]int64, MAXN+5)
	inv[1] = 1
	for i := 2; i <= MAXN; i++ {
		inv[i] = MOD - (MOD/int64(i))*inv[int(MOD%int64(i))]%MOD
	}
	ps := make([]int64, MAXN+5)
	for i := 1; i <= MAXN; i++ {
		ps[i] = (ps[i-1] + inv[i]*inv[i]%MOD) % MOD
	}

	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()
	inv2 := (MOD + 1) / 2

	for ; t > 0; t-- {
		n := nextInt()
		a := make([]int, n)
		zeros := 0
		for i := 0; i < n; i++ {
			a[i] = nextInt()
			if a[i] == 0 {
				zeros++
			}
		}
		x := 0
		for i := 0; i < zeros; i++ {
			if a[i] == 1 {
				x++
			}
		}
		if x == 0 {
			fmt.Fprintln(out, 0)
			continue
		}
		mm := (int64(n) * int64(n-1)) % MOD
		mm = (mm * inv2) % MOD
		ans := (mm * ps[x]) % MOD
		fmt.Fprintln(out, ans)
	}
}
```