For problem statement at 0-999/300-399/300-309/301/problemD.txt this is a correct solution, but verifier at 0-999/300-399/300-309/301/verifierD.go ends with passed 100/100 tests can you fix the verifier? ```go
package main
import (
"bufio"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var n, m int
n = readInt(reader)
m = readInt(reader)
pos := make([]int, n+1)
for i := 1; i <= n; i++ {
val := readInt(reader)
pos[val] = i
}
pairs := make([][]int, n+1)
for i := 1; i <= n; i++ {
for j := i; j <= n; j += i {
u, v := pos[i], pos[j]
if u > v {
u, v = v, u
}
pairs[v] = append(pairs[v], u)
}
}
type query struct {
l, id int
}
queries := make([][]query, n+1)
for i := 0; i < m; i++ {
l := readInt(reader)
r := readInt(reader)
queries[r] = append(queries[r], query{l, i})
}
ans := make([]int, m)
bit := make([]int, n+1)
for r := 1; r <= n; r++ {
for _, u := range pairs[r] {
for idx := u; idx <= n; idx += idx & -idx {
bit[idx]++
}
}
for _, q := range queries[r] {
res := 0
// Calculate sum(r)
for idx := r; idx > 0; idx -= idx & -idx {
res += bit[idx]
}
// Subtract sum(q.l - 1)
for idx := q.l - 1; idx > 0; idx -= idx & -idx {
res -= bit[idx]
}
ans[q.id] = res
}
}
for i := 0; i < m; i++ {
writeInt(writer, ans[i])
writer.WriteByte('\n')
}
}
func readInt(r *bufio.Reader) int {
var x int
var c byte
var err error
for {
c, err = r.ReadByte()
if err != nil {
return x
}
if c >= '0' && c <= '9' {
x = int(c - '0')
break
}
}
for {
c, err = r.ReadByte()
if err != nil {
break
}
if c < '0' || c > '9' {
break
}
x = x*10 + int(c-'0')
}
return x
}
func writeInt(w *bufio.Writer, x int) {
if x == 0 {
w.WriteByte('0')
return
}
var b [20]byte
i := len(b)
for x > 0 {
i--
b[i] = byte(x%10 + '0')
x /= 10
}
w.Write(b[i:])
}
```