For problem statement at 1000-1999/1700-1799/1790-1799/1799/problemF.txt this is a correct solution, but verifier at 1000-1999/1700-1799/1790-1799/1799/verifierF.go ends with All tests passed can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
"sort"
)
func readInt(reader *bufio.Reader) int {
var res int
var sign int = 1
for {
c, err := reader.ReadByte()
if err != nil {
return 0
}
if c == '-' {
sign = -1
break
}
if c >= '0' && c <= '9' {
res = int(c - '0')
break
}
}
for {
c, err := reader.ReadByte()
if err != nil {
break
}
if c >= '0' && c <= '9' {
res = res*10 + int(c-'0')
} else {
break
}
}
return res * sign
}
func main() {
reader := bufio.NewReader(os.Stdin)
t := readInt(reader)
for tc := 0; tc < t; tc++ {
n := readInt(reader)
b := readInt(reader)
k1 := readInt(reader)
k2 := readInt(reader)
a := make([]int, n)
var totalSum int64 = 0
for i := 0; i < n; i++ {
a[i] = readInt(reader)
totalSum += int64(a[i])
}
sort.Slice(a, func(i, j int) bool {
return a[i] > a[j]
})
region1Save := make([]int64, n+1)
halfSum := make([]int64, n+1)
for j := 0; j < n; j++ {
val := a[j]
ceilHalf := (val + 1) / 2
rem := ceilHalf - b
if rem < 0 {
rem = 0
}
region1Save[j+1] = region1Save[j] + int64(val-rem)
halfSum[j+1] = halfSum[j] + int64(val/2)
}
minI := 0
if k1+k2-n > minI {
minI = k1 + k2 - n
}
maxI := k1
if k2 < maxI {
maxI = k2
}
if n < maxI {
maxI = n
}
var maxSave int64 = 0
deltas := make([]int, n)
for i := minI; i <= maxI; i++ {
curSave := region1Save[i]
m1 := k1 - i
m2 := k2 - i
M := m1 + m2
curSave += halfSum[i+M] - halfSum[i]
for j := 0; j < M; j++ {
val := a[i+j]
saveOp2 := val
if saveOp2 > b {
saveOp2 = b
}
deltas[j] = saveOp2 - val/2
}
sub := deltas[:M]
sort.Ints(sub)
for j := 0; j < m2; j++ {
curSave += int64(sub[M-1-j])
}
if curSave > maxSave {
maxSave = curSave
}
}
fmt.Println(totalSum - maxSave)
}
}
```