For problem statement at 1000-1999/1400-1499/1410-1419/1418/problemE.txt this is a correct solution, but verifier at 1000-1999/1400-1499/1410-1419/1418/verifierE.go ends with All tests passed can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
"sort"
)
const MOD int64 = 998244353
func nextInt(r *bufio.Reader) int64 {
var sign int64 = 1
var val int64 = 0
c, _ := r.ReadByte()
for (c < '0' || c > '9') && c != '-' {
c, _ = r.ReadByte()
}
if c == '-' {
sign = -1
c, _ = r.ReadByte()
}
for c >= '0' && c <= '9' {
val = val*10 + int64(c-'0')
c, _ = r.ReadByte()
}
return val * sign
}
func lowerBound(a []int64, x int64) int {
l, r := 0, len(a)
for l < r {
m := (l + r) >> 1
if a[m] >= x {
r = m
} else {
l = m + 1
}
}
return l
}
func main() {
in := bufio.NewReaderSize(os.Stdin, 1<<20)
out := bufio.NewWriterSize(os.Stdout, 1<<20)
defer out.Flush()
n := int(nextInt(in))
m := int(nextInt(in))
d := make([]int64, n)
for i := 0; i < n; i++ {
d[i] = nextInt(in)
}
sort.Slice(d, func(i, j int) bool { return d[i] < d[j] })
pre := make([]int64, n+1)
for i := 0; i < n; i++ {
pre[i+1] = pre[i] + d[i]
}
total := pre[n]
// Precompute modular inverses for 1..n+1
inv := make([]int64, n+2)
inv[1] = 1
for i := 2; i <= n+1; i++ {
inv[i] = MOD - (MOD/int64(i))*(inv[int(MOD%int64(i))]%MOD)%MOD
}
for i := 0; i < m; i++ {
a := int(nextInt(in))
b := nextInt(in)
idx := lowerBound(d, b)
S := n - idx
if a > S || S == 0 {
fmt.Fprintln(out, 0)
continue
}
sumWeak := pre[idx]
sumStrong := total - sumWeak
sMod := sumStrong % MOD
wMod := sumWeak % MOD
term1 := sMod * (int64(S-a)%MOD) % MOD * inv[S] % MOD
term2 := wMod * (int64(S+1-a)%MOD) % MOD * inv[S+1] % MOD
res := (term1 + term2) % MOD
fmt.Fprintln(out, res)
}
}
```