For problem statement at 0-999/900-999/940-949/949/problemD.txt this is a correct solution, but verifier at 0-999/900-999/940-949/949/verifierD.go ends with All tests passed can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
func min(a, b int64) int64 {
if a < b {
return a
}
return b
}
func main() {
reader := bufio.NewReader(os.Stdin)
var n int
var d, b int64
fmt.Fscan(reader, &n, &d, &b)
a := make([]int64, n+1)
for i := 1; i <= n; i++ {
fmt.Fscan(reader, &a[i])
}
P := make([]int64, n+1)
for i := 1; i <= n; i++ {
P[i] = P[i-1] + a[i]
}
S := make([]int64, n+2)
for i := n; i >= 1; i-- {
S[i] = S[i+1] + a[i]
}
n1 := n / 2
if n%2 != 0 {
n1++
}
n2 := n - n1
V := make([]int64, n1+1)
for i := 1; i <= n1; i++ {
Ri := int64(i) + int64(i)*d
if Ri > int64(n) {
Ri = int64(n)
}
V[i] = P[Ri]/b - int64(i) + int64(n1)
}
M := make([]int64, n1+2)
if n1 > 0 {
M[n1] = V[n1]
for i := n1 - 1; i >= 1; i-- {
M[i] = min(M[i+1], V[i])
}
}
max_k1 := 0
for k := n1; k >= 1; k-- {
if int64(k) <= M[n1-k+1] {
max_k1 = k
break
}
}
U := make([]int64, n+1)
for j := n1 + 1; j <= n; j++ {
Lj := int64(j) - (int64(n)-int64(j)+1)*d
if Lj < 1 {
Lj = 1
}
U[j] = S[Lj]/b + int64(j) - int64(n1) - 1
}
W := make([]int64, n2+1)
if n2 > 0 {
W[1] = U[n1+1]
for i := 2; i <= n2; i++ {
W[i] = min(W[i-1], U[n1+i])
}
}
max_k2 := 0
for k := n2; k >= 1; k-- {
if int64(k) <= W[k] {
max_k2 = k
break
}
}
x1 := n1 - max_k1
x2 := n2 - max_k2
ans := x1
if x2 > ans {
ans = x2
}
fmt.Println(ans)
}
```