For problem statement at 1000-1999/1500-1599/1510-1519/1513/problemD.txt this is a correct solution, but verifier at 1000-1999/1500-1599/1510-1519/1513/verifierD.go ends with All tests passed. can you fix the verifier? ```go
package main
import (
"bufio"
"io"
"os"
"sort"
"strconv"
)
type FastScanner struct {
data []byte
idx int
n int
}
func NewFastScanner() *FastScanner {
data, _ := io.ReadAll(os.Stdin)
return &FastScanner{data: data, n: len(data)}
}
func (fs *FastScanner) NextInt() int {
for fs.idx < fs.n && (fs.data[fs.idx] < '0' || fs.data[fs.idx] > '9') {
fs.idx++
}
val := 0
for fs.idx < fs.n && fs.data[fs.idx] >= '0' && fs.data[fs.idx] <= '9' {
val = val*10 + int(fs.data[fs.idx]-'0')
fs.idx++
}
return val
}
func main() {
fs := NewFastScanner()
out := bufio.NewWriterSize(os.Stdout, 1<<20)
defer out.Flush()
t := fs.NextInt()
for ; t > 0; t-- {
n := fs.NextInt()
p := fs.NextInt()
a := make([]int, n)
idxs := make([]int, n)
for i := 0; i < n; i++ {
a[i] = fs.NextInt()
idxs[i] = i
}
sort.Slice(idxs, func(i, j int) bool {
return a[idxs[i]] < a[idxs[j]]
})
used := make([]bool, n-1)
ans := int64(n-1) * int64(p)
for _, pos := range idxs {
x := a[pos]
if x >= p {
break
}
for j := pos - 1; j >= 0; j-- {
if used[j] || a[j]%x != 0 {
break
}
used[j] = true
ans += int64(x) - int64(p)
}
for j := pos; j < n-1; j++ {
if used[j] || a[j+1]%x != 0 {
break
}
used[j] = true
ans += int64(x) - int64(p)
}
}
out.WriteString(strconv.FormatInt(ans, 10))
out.WriteByte('\n')
}
}
```