For problem statement at 0-999/200-299/280-289/286/problemB.txt this is a correct solution, but verifier at 0-999/200-299/280-289/286/verifierB.go ends with can you fix the verifier? ```go
package main
import (
"fmt"
"os"
"bufio"
)
func max(a, b int) int {
if a > b {
return a
}
return b
}
func min(a, b int) int {
if a < b {
return a
}
return b
}
func main() {
var n int
fmt.Scan(&n)
const M = 2000010
divisors := make([][]int, M+1)
for i := 1; i <= M; i++ {
for j := i; j <= M; j += i {
divisors[j] = append(divisors[j], i)
}
}
perm := make([]int, n+1)
for j := 1; j <= n; j++ {
current_p := j
current_k := n
for current_k >= 2 {
t := current_p + current_k
l := max(2, t-n)
r := min(current_k, t/2)
maxk := 0
divs := divisors[t]
for _, d := range divs {
if d >= l && d <= r {
if d > maxk {
maxk = d
}
}
}
kspe := t - n
special_valid := kspe >= 2 && kspe <= current_k && (n%kspe != 0)
if special_valid {
if kspe > maxk {
maxk = kspe
} else {
maxk = max(maxk, kspe)
}
}
if maxk == 0 {
current_p += current_k - 1
break
} else {
d := current_k - maxk
current_p += d
q := (current_p - 1) / maxk
bstart := q*maxk + 1
current_p = bstart
current_k = maxk - 1
}
}
perm[j] = current_p
}
out := bufio.NewWriter(os.Stdout)
for i := 1; i <= n; i++ {
if i > 1 {
out.WriteString(" ")
}
fmt.Fprintf(out, "%d", perm[i])
}
out.WriteString("\n")
out.Flush()
}
```