For problem statement at 1000-1999/1500-1599/1580-1589/1583/problemD.txt this is a correct solution, but verifier at 1000-1999/1500-1599/1580-1589/1583/verifierD.go ends with Problem D is interactive and cannot be automatically verified. can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var n int
fmt.Fscan(reader, &n)
next := make([]int, n)
for i := 0; i < n; i++ {
a := make([]int, n)
for j := 0; j < n; j++ {
if j == i {
a[j] = 2
} else {
a[j] = 1
}
}
fmt.Fprint(writer, "? ")
for j := 0; j < n; j++ {
fmt.Fprint(writer, a[j])
if j < n-1 {
fmt.Fprint(writer, " ")
}
}
fmt.Fprintln(writer)
writer.Flush()
var res int
fmt.Fscan(reader, &res)
if res == 0 {
next[i] = -1
} else {
next[i] = res - 1
}
}
prev := make([]int, n)
for i := 0; i < n; i++ {
a := make([]int, n)
for j := 0; j < n; j++ {
if j == i {
a[j] = 1
} else {
a[j] = 2
}
}
fmt.Fprint(writer, "? ")
for j := 0; j < n; j++ {
fmt.Fprint(writer, a[j])
if j < n-1 {
fmt.Fprint(writer, " ")
}
}
fmt.Fprintln(writer)
writer.Flush()
var res int
fmt.Fscan(reader, &res)
if res == 0 {
prev[i] = -1
} else {
prev[i] = res - 1
}
}
p := make([]int, n)
cur := 0
for i := 0; i < n; i++ {
if next[i] == -1 {
p[i] = n
cur = i
break
}
}
for val := n; val >= 2; val-- {
if prev[cur] != -1 && prev[cur] < cur {
cur = prev[cur]
} else {
for k := 0; k < n; k++ {
if next[k] == cur && k > cur {
cur = k
break
}
}
}
p[cur] = val - 1
}
fmt.Fprint(writer, "! ")
for i := 0; i < n; i++ {
fmt.Fprint(writer, p[i])
if i < n-1 {
fmt.Fprint(writer, " ")
}
}
fmt.Fprintln(writer)
writer.Flush()
}
```