For problem statement at 0-999/700-799/730-739/736/problemD.txt this is a correct solution, but verifier at 0-999/700-799/730-739/736/verifierD.go ends with reference output parse error on test 2: unexpected token "NO_SOL"
output:
NO_SOL
exit status 1 can you fix the verifier? ```go
package main
import (
"bufio"
"os"
)
func readInt(in *bufio.Reader) int {
var n int
var c byte
for {
c, _ = in.ReadByte()
if c >= '0' && c <= '9' {
n = int(c - '0')
break
}
}
for {
c, _ = in.ReadByte()
if c >= '0' && c <= '9' {
n = n*10 + int(c-'0')
} else {
break
}
}
return n
}
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
n := readInt(in)
m := readInt(in)
u := make([]int, m)
v := make([]int, m)
words := (n + 63) >> 6
A := make([][]uint64, n)
B := make([][]uint64, n)
for i := 0; i < n; i++ {
A[i] = make([]uint64, words)
B[i] = make([]uint64, words)
B[i][i>>6] |= 1 << (i & 63)
}
for i := 0; i < m; i++ {
u[i] = readInt(in) - 1
v[i] = readInt(in) - 1
A[u[i]][v[i]>>6] |= 1 << (v[i] & 63)
}
for i := 0; i < n; i++ {
pivot := i
for j := i; j < n; j++ {
if (A[j][i>>6] & (1 << (i & 63))) != 0 {
pivot = j
break
}
}
if pivot != i {
A[i], A[pivot] = A[pivot], A[i]
B[i], B[pivot] = B[pivot], B[i]
}
for j := 0; j < n; j++ {
if i != j && (A[j][i>>6]&(1<<(i&63))) != 0 {
for k := i >> 6; k < words; k++ {
A[j][k] ^= A[i][k]
}
for k := 0; k < words; k++ {
B[j][k] ^= B[i][k]
}
}
}
}
for i := 0; i < m; i++ {
if (B[v[i]][u[i]>>6] & (1 << (u[i] & 63))) == 0 {
out.WriteString("YES\n")
} else {
out.WriteString("NO\n")
}
}
}
```