For problem statement at 2000-2999/2100-2199/2130-2139/2135/problemD1.txt this is a correct solution, but verifier at 2000-2999/2100-2199/2130-2139/2135/verifierD1.go ends with All 10 tests passed. can you fix the verifier? ```go
package main
import (
"fmt"
"os"
)
func max(a, b int) int {
if a > b {
return a
}
return b
}
func main() {
var t int
fmt.Scan(&t)
const N = 100000
const MAXW = 100000
for test := 0; test < t; test++ {
// First query: ? N 1 1 ... 1
fmt.Printf("? %d", N)
for i := 0; i < N; i++ {
fmt.Printf(" 1")
}
fmt.Printf("\n")
os.Stdout.Sync()
var r int
fmt.Scan(&r)
if r == -1 {
os.Exit(0)
}
var lo, hi int
if r == 1 {
lo = N
hi = N
} else if r > 1 {
lo = (N + r - 1) / r
hi = (N - 1) / (r - 1)
if hi > MAXW {
hi = MAXW
}
} else {
// impossible
continue
}
if lo > hi {
// impossible
continue
}
if lo == hi {
fmt.Printf("! %d\n", lo)
os.Stdout.Sync()
continue
}
// Second query
S := hi - lo + 1
M := S
T := make([]int, M)
for j := 0; j < M; j++ {
T[j] = lo + j
}
A := make([]int, M)
B := make([]int, M)
A[0] = 1
B[0] = T[0] - 1
for j := 0; j < M-1; j++ {
minA := hi - T[j] + 1
upper := T[j+1] - 1
needed := T[j] - B[j]
if needed < 1 {
needed = 1
}
a := max(minA, needed)
if a > upper || a > lo {
// fail, but shouldn't happen
continue
}
A[j+1] = a
B[j+1] = T[j+1] - a
}
// Build words
fmt.Printf("? %d", 2*M)
for j := 0; j < M; j++ {
fmt.Printf(" %d %d", A[j], B[j])
}
fmt.Printf("\n")
os.Stdout.Sync()
var r2 int
fmt.Scan(&r2)
if r2 == -1 {
os.Exit(0)
}
k := 2*M - r2
w := lo + (k - 1)
fmt.Printf("! %d\n", w)
os.Stdout.Sync()
}
}
```