For problem statement at 1000-1999/1700-1799/1770-1779/1779/problemD.txt this is a correct solution, but verifier at 1000-1999/1700-1799/1770-1779/1779/verifierD.go ends with All tests passed can you fix the verifier? ```go
package main
import (
"bufio"
"os"
)
type Triple struct {
x int64
l int
r int
}
var rdr = bufio.NewReaderSize(os.Stdin, 1<<20)
var wtr = bufio.NewWriterSize(os.Stdout, 1<<20)
func nextInt() int {
sign := 1
val := 0
c, err := rdr.ReadByte()
for (c < '0' || c > '9') && c != '-' {
c, err = rdr.ReadByte()
if err != nil {
return 0
}
}
if c == '-' {
sign = -1
c, _ = rdr.ReadByte()
}
for c >= '0' && c <= '9' {
val = val*10 + int(c-'0')
c, err = rdr.ReadByte()
if err != nil {
break
}
}
return sign * val
}
func main() {
defer wtr.Flush()
t := nextInt()
for ; t > 0; t-- {
n := nextInt()
a := make([]int64, n)
b := make([]int64, n)
for i := 0; i < n; i++ {
a[i] = int64(nextInt())
}
for i := 0; i < n; i++ {
b[i] = int64(nextInt())
}
m := nextInt()
have := make(map[int64]int)
for i := 0; i < m; i++ {
x := int64(nextInt())
have[x]++
}
ok := true
for i := 0; i < n; i++ {
if b[i] > a[i] {
ok = false
break
}
}
if !ok {
wtr.WriteString("NO\n")
continue
}
L := make([]int, n)
R := make([]int, n)
st := make([]int, 0, n)
for i := 0; i < n; i++ {
for len(st) > 0 && b[st[len(st)-1]] <= b[i] {
st = st[:len(st)-1]
}
if len(st) == 0 {
L[i] = -1
} else {
L[i] = st[len(st)-1]
}
st = append(st, i)
}
st = st[:0]
for i := n - 1; i >= 0; i-- {
for len(st) > 0 && b[st[len(st)-1]] <= b[i] {
st = st[:len(st)-1]
}
if len(st) == 0 {
R[i] = n
} else {
R[i] = st[len(st)-1]
}
st = append(st, i)
}
usedGroups := make(map[Triple]bool)
need := make(map[int64]int)
for i := 0; i < n; i++ {
if a[i] > b[i] {
tp := Triple{x: b[i], l: L[i], r: R[i]}
if !usedGroups[tp] {
usedGroups[tp] = true
need[b[i]]++
}
}
}
for x, cnt := range need {
if have[x] < cnt {
ok = false
break
}
}
if ok {
wtr.WriteString("YES\n")
} else {
wtr.WriteString("NO\n")
}
}
}
```