For problem statement at 1000-1999/1900-1999/1990-1999/1994/problemG.txt this is a correct solution, but verifier at 1000-1999/1900-1999/1990-1999/1994/verifierG.go ends with test 73 failed. Expected 10 got 00
exit status 1 can you fix the verifier? ```go
package main
import (
"bufio"
"io"
"os"
)
type FastScanner struct {
data []byte
idx int
}
func (fs *FastScanner) skip() {
for fs.idx < len(fs.data) && fs.data[fs.idx] <= ' ' {
fs.idx++
}
}
func (fs *FastScanner) NextInt() int {
fs.skip()
sign := 1
if fs.data[fs.idx] == '-' {
sign = -1
fs.idx++
}
val := 0
for fs.idx < len(fs.data) {
b := fs.data[fs.idx]
if b < '0' || b > '9' {
break
}
val = val*10 + int(b-'0')
fs.idx++
}
return sign * val
}
func (fs *FastScanner) NextToken() []byte {
fs.skip()
start := fs.idx
for fs.idx < len(fs.data) && fs.data[fs.idx] > ' ' {
fs.idx++
}
return fs.data[start:fs.idx]
}
func main() {
data, _ := io.ReadAll(os.Stdin)
fs := FastScanner{data: data}
out := bufio.NewWriterSize(os.Stdout, 1<<20)
defer out.Flush()
t := fs.NextInt()
for ; t > 0; t-- {
n := fs.NextInt()
k := fs.NextInt()
s := fs.NextToken()
ones := make([]int, k)
for i := 0; i < n; i++ {
a := fs.NextToken()
for j := 0; j < k; j++ {
if a[j] == '1' {
ones[j]++
}
}
}
m := n + 1
parent := make([]byte, k*m)
curr := make([]byte, m)
next := make([]byte, m)
curr[0] = 1
ok := true
for bit := 0; bit < k; bit++ {
idx := k - 1 - bit
sbit := int(s[idx] - '0')
c0 := ones[idx]
c1 := n - c0
row := bit * m
any := false
for carry := 0; carry <= n; carry++ {
if curr[carry] == 0 {
continue
}
sum := carry + c0
if (sum&1) == sbit {
nc := (sum - sbit) >> 1
if next[nc] == 0 {
next[nc] = 1
any = true
}
}
sum = carry + c1
if (sum&1) == sbit {
nc := (sum - sbit) >> 1
if next[nc] == 0 {
next[nc] = 1
parent[row+nc] = 1
any = true
}
}
}
if !any {
ok = false
break
}
curr, next = next, curr
for i := 0; i <= n; i++ {
next[i] = 0
}
}
if !ok || curr[0] == 0 {
out.WriteString("-1\n")
continue
}
ans := make([]byte, k)
carry := 0
for bit := k - 1; bit >= 0; bit-- {
idx := k - 1 - bit
ch := parent[bit*m+carry]
ans[idx] = '0' + ch
val := ones[idx]
if ch == 1 {
val = n - val
}
carry = 2*carry + int(s[idx]-'0') - val
}
out.Write(ans)
out.WriteByte('\n')
}
}
```