For problem statement at 1000-1999/1500-1599/1570-1579/1575/problemJ.txt this is a correct solution, but verifier at 1000-1999/1500-1599/1570-1579/1575/verifierJ.go ends with reference failed: exit status 2: panic: runtime error: index out of range [4] with length 4
goroutine 1 [running]:
main.drop(0x0?, 0x0?)
/home/ubuntu/codeforces/1000-1999/1500-1599/1570-1579/1575/1575J.go:17 +0x1b4
main.drop(0x0, 0x3)
/home/ubuntu/codeforces/1000-1999/1500-1599/1570-1579/1575/1575J.go:24 +0x124
main.main()
/home/ubuntu/codeforces/1000-1999/1500-1599/1570-1579/1575/1575J.go:53 +0x3d4
exit status 1 can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
func nextInt(r *bufio.Reader) int {
sign := 1
v := 0
b, err := r.ReadByte()
for (b < '0' || b > '9') && b != '-' {
if err != nil {
return 0
}
b, err = r.ReadByte()
}
if b == '-' {
sign = -1
b, err = r.ReadByte()
}
for b >= '0' && b <= '9' {
v = v*10 + int(b-'0')
b, err = r.ReadByte()
if err != nil {
break
}
}
return sign * v
}
func find(parent [][]int, c, r, n int) int {
if r > n {
return n + 1
}
p := parent[c][r]
if p == r {
return r
}
parent[c][r] = find(parent, c, p, n)
return parent[c][r]
}
func drop(a [][]int, parent [][]int, n, m, c int) int {
r := find(parent, c, 1, n)
for r != n+1 {
dir := a[r][c]
if dir == 1 {
parent[c][r] = find(parent, c, r+1, n)
a[r][c] = 2
c++
r = find(parent, c, r, n)
} else if dir == 3 {
parent[c][r] = find(parent, c, r+1, n)
a[r][c] = 2
c--
r = find(parent, c, r, n)
} else {
parent[c][r] = find(parent, c, r+1, n)
r = find(parent, c, r, n)
}
}
return c
}
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
n := nextInt(in)
m := nextInt(in)
k := nextInt(in)
a := make([][]int, n+1)
for i := 1; i <= n; i++ {
a[i] = make([]int, m+1)
for j := 1; j <= m; j++ {
a[i][j] = nextInt(in)
}
}
parent := make([][]int, m+1)
for c := 1; c <= m; c++ {
parent[c] = make([]int, n+2)
for r := 1; r <= n+1; r++ {
parent[c][r] = r
}
for r := 1; r <= n; r++ {
if a[r][c] == 2 {
parent[c][r] = r + 1
}
}
}
for i := 0; i < k; i++ {
c := nextInt(in)
ans := drop(a, parent, n, m, c)
if i > 0 {
fmt.Fprint(out, " ")
}
fmt.Fprint(out, ans)
}
fmt.Fprintln(out)
}
```