For problem statement at 1000-1999/1100-1199/1180-1189/1186/problemE.txt this is a correct solution, but verifier at 1000-1999/1100-1199/1180-1189/1186/verifierE.go ends with All 100 tests passed can you fix the verifier? ```go
package main
import (
"bufio"
"io"
"math/bits"
"os"
"strconv"
)
var data []byte
var ptr int
var n, m int
var pref [][]int64
var totalOnes int64
var cellCount int64
func nextInt() int64 {
for ptr < len(data) && (data[ptr] < '0' || data[ptr] > '9') {
ptr++
}
var v int64
for ptr < len(data) && data[ptr] >= '0' && data[ptr] <= '9' {
v = v*10 + int64(data[ptr]-'0')
ptr++
}
return v
}
func nextBytes() []byte {
for ptr < len(data) && data[ptr] <= ' ' {
ptr++
}
start := ptr
for ptr < len(data) && data[ptr] > ' ' {
ptr++
}
return data[start:ptr]
}
func count1(k int64) int64 {
if k == 0 {
return 0
}
p := int64(1) << (bits.Len64(uint64(k)) - 1)
if k == p {
return p / 2
}
l := k - p
return p/2 + l - count1(l)
}
func prefixSum(x, y int64) int64 {
if x <= 0 || y <= 0 {
return 0
}
br := x / int64(n)
bc := y / int64(m)
rx := int(x % int64(n))
cy := int(y % int64(m))
c1r := count1(br)
c0r := br - c1r
c1c := count1(bc)
c0c := bc - c1c
same := c0r*c0c + c1r*c1c
sum := totalOnes*same + (cellCount-totalOnes)*(br*bc-same)
pr := bits.OnesCount64(uint64(br)) & 1
pc := bits.OnesCount64(uint64(bc)) & 1
if rx > 0 && bc > 0 {
base := pref[rx][m]
area := int64(rx) * int64(m)
var sameC int64
if pr == 0 {
sameC = c0c
} else {
sameC = c1c
}
sum += base*sameC + (area-base)*(bc-sameC)
}
if cy > 0 && br > 0 {
base := pref[n][cy]
area := int64(n) * int64(cy)
var sameR int64
if pc == 0 {
sameR = c0r
} else {
sameR = c1r
}
sum += base*sameR + (area-base)*(br-sameR)
}
if rx > 0 && cy > 0 {
base := pref[rx][cy]
area := int64(rx) * int64(cy)
if pr^pc == 0 {
sum += base
} else {
sum += area - base
}
}
return sum
}
func main() {
data, _ = io.ReadAll(os.Stdin)
n = int(nextInt())
m = int(nextInt())
q := int(nextInt())
pref = make([][]int64, n+1)
for i := range pref {
pref[i] = make([]int64, m+1)
}
for i := 1; i <= n; i++ {
row := nextBytes()
for j := 1; j <= m; j++ {
v := int64(row[j-1] - '0')
pref[i][j] = pref[i-1][j] + pref[i][j-1] - pref[i-1][j-1] + v
}
}
totalOnes = pref[n][m]
cellCount = int64(n) * int64(m)
out := make([]byte, 0, q*20)
for ; q > 0; q-- {
x1 := nextInt()
y1 := nextInt()
x2 := nextInt()
y2 := nextInt()
ans := prefixSum(x2, y2) - prefixSum(x1-1, y2) - prefixSum(x2, y1-1) + prefixSum(x1-1, y1-1)
out = strconv.AppendInt(out, ans, 10)
out = append(out, '\n')
}
w := bufio.NewWriterSize(os.Stdout, 1<<20)
w.Write(out)
w.Flush()
}
```