For problem statement at 1000-1999/1900-1999/1950-1959/1957/problemD.txt this is a correct solution, but verifier at 1000-1999/1900-1999/1950-1959/1957/verifierD.go ends with case 1 failed: expected 101 got 88
exit status 1 can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"io"
"math/bits"
"os"
)
func main() {
data, _ := io.ReadAll(os.Stdin)
idx := 0
nextInt := func() int {
for idx < len(data) && (data[idx] < '0' || data[idx] > '9') && data[idx] != '-' {
idx++
}
sign := 1
if data[idx] == '-' {
sign = -1
idx++
}
val := 0
for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
val = val*10 + int(data[idx]-'0')
idx++
}
return sign * val
}
t := nextInt()
out := bufio.NewWriterSize(os.Stdout, 1<<20)
defer out.Flush()
for ; t > 0; t-- {
n := nextInt()
a := make([]int, n+1)
top := make([]int, n+1)
for i := 1; i <= n; i++ {
a[i] = nextInt()
top[i] = bits.Len(uint(a[i])) - 1
}
q := make([]byte, n+1)
suf0 := make([]int64, n+2)
suf1 := make([]int64, n+2)
var ans int64
for b := 0; b < 30; b++ {
q[0] = 0
for i := 1; i <= n; i++ {
q[i] = q[i-1] ^ byte((a[i]>>b)&1)
}
suf0[n+1] = 0
suf1[n+1] = 0
for i := n; i >= 0; i-- {
suf0[i] = suf0[i+1]
suf1[i] = suf1[i+1]
if q[i] == 0 {
suf0[i]++
} else {
suf1[i]++
}
}
var left0 int64 = 1
var left1 int64 = 0
for i := 1; i <= n; i++ {
if top[i] == b {
ans += left0*suf0[i] + left1*suf1[i]
}
if q[i] == 0 {
left0++
} else {
left1++
}
}
}
fmt.Fprintln(out, ans)
}
}
```