← Home
For problem statement at 1000-1999/1200-1299/1280-1289/1283/problemC.txt this is a correct solution, but verifier at 1000-1999/1200-1299/1280-1289/1283/verifierC.go ends with test 1: expected [11 30 8 5 19 7 12 23 14 21 31 18 2 4 16 15 3 29 28 17 13 24 25 33 27 20 9 32 1 6 22 10 26] got [11 30 1 5 19 7 12 23 14 21 31 18 2 4 8 15 3 29 28 16 13 17 25 33 24 20 9 27 32 6 22 10 26]

exit status 1 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)

	f := make([]int, n+1)
	received := make([]bool, n+1)
	var G []int

	for i := 1; i <= n; i++ {
		fmt.Fscan(reader, &f[i])
		if f[i] == 0 {
			G = append(G, i)
		} else {
			received[f[i]] = true
		}
	}

	isG := make([]bool, n+1)
	for _, g := range G {
		isG[g] = true
	}

	var A []int
	var B []int
	var C []int

	for i := 1; i <= n; i++ {
		if !received[i] {
			if isG[i] {
				A = append(A, i)
			} else {
				B = append(B, i)
			}
		}
	}

	for _, g := range G {
		if received[g] {
			C = append(C, g)
		}
	}

	if len(A) > 1 {
		for i := 0; i < len(A)-1; i++ {
			f[A[i]] = A[i+1]
		}
		f[A[len(A)-1]] = A[0]
		for i := 0; i < len(B); i++ {
			f[C[i]] = B[i]
		}
	} else if len(A) == 1 {
		f[A[0]] = B[0]
		f[C[0]] = A[0]
		for i := 1; i < len(B); i++ {
			f[C[i]] = B[i]
		}
	} else {
		for i := 0; i < len(B); i++ {
			f[C[i]] = B[i]
		}
	}

	out := bufio.NewWriter(os.Stdout)
	for i := 1; i <= n; i++ {
		fmt.Fprint(out, f[i])
		if i < n {
			fmt.Fprint(out, " ")
		}
	}
	fmt.Fprintln(out)
	out.Flush()
}
```