← Home
For problem statement at 1000-1999/1900-1999/1960-1969/1968/problemF.txt this is a correct solution, but verifier at 1000-1999/1900-1999/1960-1969/1968/verifierF.go ends with All 100 tests passed can you fix the verifier? ```go
package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
)

func findMinMax(list []int, left, right int) (minPos, maxPos int, has bool) {
	idx := sort.SearchInts(list, left)
	if idx >= len(list) || list[idx] > right {
		return 0, 0, false
	}
	minPos = list[idx]
	idx2 := sort.SearchInts(list, right+1)
	if idx2 == 0 {
		return 0, 0, false
	}
	maxPos = list[idx2-1]
	return minPos, maxPos, true
}

func main() {
	in := bufio.NewReader(os.Stdin)
	var t int
	fmt.Fscan(in, &t)
	for i := 0; i < t; i++ {
		var n, q int
		fmt.Fscan(in, &n, &q)
		a := make([]int, n+1)
		for i := 1; i <= n; i++ {
			fmt.Fscan(in, &a[i])
		}
		p := make([]int, n+1)
		for i := 1; i <= n; i++ {
			p[i] = p[i-1] ^ a[i]
		}
		pos := make(map[int][]int)
		for i := 0; i <= n; i++ {
			pos[p[i]] = append(pos[p[i]], i)
		}
		for qq := 0; qq < q; qq++ {
			var l, r int
			fmt.Fscan(in, &l, &r)
			base := p[l-1]
			targ := p[r]
			s := targ ^ base
			if s == 0 {
				fmt.Println("YES")
				continue
			}
			targList, ok2 := pos[targ]
			if !ok2 || len(targList) == 0 {
				fmt.Println("NO")
				continue
			}
			baseList, ok1 := pos[base]
			if !ok1 || len(baseList) == 0 {
				fmt.Println("NO")
				continue
			}
			minT, _, hasT := findMinMax(targList, l, r-1)
			if !hasT {
				fmt.Println("NO")
				continue
			}
			_, maxB, hasB := findMinMax(baseList, l, r-1)
			if !hasB {
				fmt.Println("NO")
				continue
			}
			if minT < maxB {
				fmt.Println("YES")
			} else {
				fmt.Println("NO")
			}
		}
	}
}
```