For problem statement at 1000-1999/1300-1399/1330-1339/1334/problemE.txt this is a correct solution, but verifier at 1000-1999/1300-1399/1330-1339/1334/verifierE.go ends with All tests passed can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
const mod int64 = 998244353
const maxf = 100
var fact [maxf + 1]int64
var invfact [maxf + 1]int64
type primePower struct {
p int64
a int64
}
func modpow(a, b, m int64) int64 {
res := int64(1)
for b > 0 {
if b&1 == 1 {
res = res * a % m
}
a = a * a % m
b >>= 1
}
return res
}
func factorize(d int64) []primePower {
var res []primePower
for i := int64(2); i*i <= d; i++ {
if d%i == 0 {
cnt := int64(0)
for d%i == 0 {
cnt++
d /= i
}
res = append(res, primePower{i, cnt})
}
}
if d > 1 {
res = append(res, primePower{d, 1})
}
return res
}
func computeMulti(ds []int) int64 {
if len(ds) == 0 {
return 1
}
s := 0
for _, d := range ds {
s += d
}
res := fact[s]
for _, d := range ds {
res = res * invfact[d] % mod
}
return res
}
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
fact[0] = 1
for i := 1; i <= maxf; i++ {
fact[i] = fact[i-1] * int64(i) % mod
}
for i := 0; i <= maxf; i++ {
invfact[i] = modpow(fact[i], mod-2, mod)
}
var D int64
fmt.Fscan(in, &D)
factors := factorize(D)
k := len(factors)
var q int
fmt.Fscan(in, &q)
for qi := 0; qi < q; qi++ {
var v, u int64
fmt.Fscan(in, &v, &u)
expv := make([]int, k)
for i := 0; i < k; i++ {
p := factors[i].p
vv := v
cnt := 0
for vv%p == 0 && vv > 0 {
vv /= p
cnt++
}
expv[i] = cnt
}
expu := make([]int, k)
for i := 0; i < k; i++ {
p := factors[i].p
uu := u
cnt := 0
for uu%p == 0 && uu > 0 {
uu /= p
cnt++
}
expu[i] = cnt
}
var dec []int
var inc []int
for i := 0; i < k; i++ {
delta := expv[i] - expu[i]
if delta > 0 {
dec = append(dec, delta)
} else if delta < 0 {
inc = append(inc, -delta)
}
}
waysd := computeMulti(dec)
waysi := computeMulti(inc)
ans := waysd * waysi % mod
fmt.Fprintln(out, ans)
}
}
```