For problem statement at 0-999/0-99/80-89/82/problemC.txt this is a correct solution, but verifier at 0-999/0-99/80-89/82/verifierC.go ends with All tests passed can you fix the verifier? ```go
package main
import (
"bufio"
"container/heap"
"fmt"
"os"
"sort"
)
type Edge struct {
to int
cap int
}
type Item struct {
idx int
time int
}
var priorities []int
type IntHeap []int
func (h IntHeap) Len() int { return len(h) }
func (h IntHeap) Less(i, j int) bool { return priorities[h[i]] < priorities[h[j]] }
func (h IntHeap) Swap(i, j int) { h[i], h[j] = h[j], h[i] }
func (h *IntHeap) Push(x interface{}) { *h = append(*h, x.(int)) }
func (h *IntHeap) Pop() interface{} {
old := *h
n := len(old)
x := old[n-1]
*h = old[:n-1]
return x
}
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var n int
fmt.Fscan(reader, &n)
priorities = make([]int, n+1)
for i := 1; i <= n; i++ {
fmt.Fscan(reader, &priorities[i])
}
adj := make([][]Edge, n+1)
for i := 0; i < n-1; i++ {
var v, u, c int
fmt.Fscan(reader, &v, &u, &c)
adj[v] = append(adj[v], Edge{u, c})
adj[u] = append(adj[u], Edge{v, c})
}
parent := make([]int, n+1)
capToParent := make([]int, n+1)
order := make([]int, 0, n)
queue := []int{1}
parent[1] = 0
for len(queue) > 0 {
v := queue[0]
queue = queue[1:]
order = append(order, v)
for _, e := range adj[v] {
if e.to != parent[v] {
parent[e.to] = v
capToParent[e.to] = e.cap
queue = append(queue, e.to)
}
}
}
arrivals := make([][]Item, n+1)
for i := 1; i <= n; i++ {
arrivals[i] = append(arrivals[i], Item{i, 0})
}
for i := len(order) - 1; i > 0; i-- {
v := order[i]
capacity := capToParent[v]
p := parent[v]
sort.Slice(arrivals[v], func(i, j int) bool {
return arrivals[v][i].time < arrivals[v][j].time
})
pq := &IntHeap{}
heap.Init(pq)
day := 0
idx := 0
list := arrivals[v]
for idx < len(list) || pq.Len() > 0 {
for idx < len(list) && list[idx].time <= day {
heap.Push(pq, list[idx].idx)
idx++
}
if pq.Len() == 0 {
day = list[idx].time
continue
}
take := capacity
if pq.Len() < take {
take = pq.Len()
}
for k := 0; k < take; k++ {
divIdx := heap.Pop(pq).(int)
arrivals[p] = append(arrivals[p], Item{divIdx, day + 1})
}
day++
}
arrivals[v] = nil
}
ans := make([]int, n+1)
for _, item := range arrivals[1] {
ans[item.idx] = item.time
}
for i := 1; i <= n; i++ {
if i > 1 {
fmt.Fprint(writer, " ")
}
fmt.Fprint(writer, ans[i])
}
fmt.Fprintln(writer)
}
```