For problem statement at 2000-2999/2000-2099/2070-2079/2070/problemD.txt this is a correct solution, but verifier at 2000-2999/2000-2099/2070-2079/2070/verifierD.go ends with All 84 tests passed. can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var t int
if _, err := fmt.Fscan(reader, &t); err != nil {
return
}
for i := 0; i < t; i++ {
var n int
fmt.Fscan(reader, &n)
p := make([]int, n+1)
depth := make([]int, n+1)
head := make([]int, n)
next := make([]int, n+1)
depth[1] = 0
for j := 2; j <= n; j++ {
fmt.Fscan(reader, &p[j])
d := depth[p[j]] + 1
depth[j] = d
next[j] = head[d]
head[d] = j
}
dp := make([]int, n+1)
S := make([]int, n)
dp[1] = 1
S[0] = 1
totalAns := 1
for d := 1; d < n; d++ {
u := head[d]
if u == 0 {
break
}
for u != 0 {
if d == 1 {
dp[u] = S[0]
} else {
dp[u] = S[d-1] - dp[p[u]]
if dp[u] < 0 {
dp[u] += 998244353
}
}
S[d] += dp[u]
if S[d] >= 998244353 {
S[d] -= 998244353
}
u = next[u]
}
totalAns += S[d]
if totalAns >= 998244353 {
totalAns -= 998244353
}
}
fmt.Fprintln(writer, totalAns)
}
}