For problem statement at 0-999/400-499/440-449/441/problemD.txt this is a correct solution, but verifier at 0-999/400-499/440-449/441/verifierD.go ends with All tests passed can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
var n int
fmt.Fscan(reader, &n)
p := make([]int, n+1)
for i := 1; i <= n; i++ {
fmt.Fscan(reader, &p[i])
}
var m int
fmt.Fscan(reader, &m)
visited := make([]bool, n+1)
cycles := 0
for i := 1; i <= n; i++ {
if !visited[i] {
cycles++
curr := i
for !visited[curr] {
visited[curr] = true
curr = p[curr]
}
}
}
k := n - cycles
ans := []int{}
if k > m {
x := 1
for k > m {
for p[x] == x {
x++
}
curr := p[x]
bestY := curr
for curr != x {
if curr < bestY {
bestY = curr
}
curr = p[curr]
}
ans = append(ans, x, bestY)
p[x], p[bestY] = p[bestY], p[x]
k--
}
} else if k < m {
for k < m {
inCycle := make([]bool, n+1)
curr := 1
for {
inCycle[curr] = true
curr = p[curr]
if curr == 1 {
break
}
}
y := 2
for inCycle[y] {
y++
}
ans = append(ans, 1, y)
p[1], p[y] = p[y], p[1]
k++
}
}
fmt.Println(len(ans) / 2)
for i, v := range ans {
if i > 0 {
fmt.Print(" ")
}
fmt.Print(v)
}
fmt.Println()
}
```