← Home
For problem statement at 1000-1999/1700-1799/1730-1739/1731/problemC.txt this is a correct solution, but verifier at 1000-1999/1700-1799/1730-1739/1731/verifierC.go ends with All 20 tests passed can you fix the verifier? ```go
package main

import (
	"bytes"
	"io"
	"math/bits"
	"os"
	"strconv"
)

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

	t := nextInt()
	const maxX = 1 << 18

	squares := make([]int, 0, 512)
	for i := 0; i*i < maxX; i++ {
		squares = append(squares, i*i)
	}

	cnt := make([]int, maxX)
	var out bytes.Buffer

	for ; t > 0; t-- {
		n := nextInt()
		limit := 1 << bits.Len(uint(n))
		m := 0
		for m < len(squares) && squares[m] < limit {
			m++
		}

		used := make([]int, 0, n+1)
		cnt[0] = 1
		used = append(used, 0)

		px := 0
		var squareSubarrays int64

		for i := 0; i < n; i++ {
			px ^= nextInt()
			for j := 0; j < m; j++ {
				squareSubarrays += int64(cnt[px^squares[j]])
			}
			if cnt[px] == 0 {
				used = append(used, px)
			}
			cnt[px]++
		}

		total := int64(n) * int64(n+1) / 2
		out.WriteString(strconv.FormatInt(total-squareSubarrays, 10))
		out.WriteByte('\n')

		for _, v := range used {
			cnt[v] = 0
		}
	}

	os.Stdout.Write(out.Bytes())
}
```