← 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 (
	"io"
	"os"
	"strings"
)

func lowerBound(a []int, x int) int {
	l, r := 0, len(a)
	for l < r {
		m := (l + r) >> 1
		if a[m] < x {
			l = m + 1
		} else {
			r = m
		}
	}
	return l
}

func main() {
	data, _ := io.ReadAll(os.Stdin)
	idx := 0
	nextInt := func() int {
		n := len(data)
		for idx < n && (data[idx] < '0' || data[idx] > '9') && data[idx] != '-' {
			idx++
		}
		sign := 1
		if idx < n && data[idx] == '-' {
			sign = -1
			idx++
		}
		val := 0
		for idx < n && data[idx] >= '0' && data[idx] <= '9' {
			val = val*10 + int(data[idx]-'0')
			idx++
		}
		return val * sign
	}

	t := nextInt()
	var sb strings.Builder
	for ; t > 0; t-- {
		n := nextInt()
		q := nextInt()
		a := make([]int, n)
		for i := 0; i < n; i++ {
			a[i] = nextInt()
		}
		p := make([]int, n+1)
		for i := 1; i <= n; i++ {
			p[i] = p[i-1] ^ a[i-1]
		}
		mp := make(map[int][]int, n+1)
		for i := 0; i <= n; i++ {
			mp[p[i]] = append(mp[p[i]], i)
		}
		for ; q > 0; q-- {
			l := nextInt()
			r := nextInt()
			L := p[l-1]
			R := p[r]
			if (L ^ R) == 0 {
				sb.WriteString("YES\n")
				continue
			}
			vsR := mp[R]
			i1 := lowerBound(vsR, l)
			if i1 >= len(vsR) || vsR[i1] >= r {
				sb.WriteString("NO\n")
				continue
			}
			vsL := mp[L]
			i2 := lowerBound(vsL, vsR[i1]+1)
			if i2 < len(vsL) && vsL[i2] <= r-1 {
				sb.WriteString("YES\n")
			} else {
				sb.WriteString("NO\n")
			}
		}
	}
	os.Stdout.WriteString(sb.String())
}
```