← Home
For problem statement at 1000-1999/1400-1499/1450-1459/1450/problemF.txt this is a correct solution, but verifier at 1000-1999/1400-1499/1450-1459/1450/verifierF.go ends with case 4 failed: runtime error: exit status 2
panic: runtime error: index out of range [3] with length 3

goroutine 1 [running]:
main.main()
	/tmp/build-1435007365/solution.go:28 +0x5a4

input:
1
2
0 3
exit status 1 can you fix the verifier? ```go
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	in := bufio.NewReader(os.Stdin)
	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	var t int
	if _, err := fmt.Fscan(in, &t); err != nil {
		return
	}

	for tc := 0; tc < t; tc++ {
		var n int
		fmt.Fscan(in, &n)

		a := make([]int, n)
		cnt := make([]int, n+1)
		maxCnt := 0
		for i := 0; i < n; i++ {
			fmt.Fscan(in, &a[i])
			cnt[a[i]]++
			if cnt[a[i]] > maxCnt {
				maxCnt = cnt[a[i]]
			}
		}

		if 2*maxCnt > n+1 {
			fmt.Fprintln(out, -1)
			continue
		}

		if n == 1 {
			fmt.Fprintln(out, 0)
			continue
		}

		S := 0
		M := make([]int, n+1)
		for i := 0; i < n-1; i++ {
			if a[i] != a[i+1] {
				S++
				M[a[i]]++
				M[a[i+1]]++
			}
		}

		D := 0
		for c := 1; c <= n; c++ {
			if cnt[c] > 0 {
				val := S - M[c] - (n + 1 - 2*cnt[c])
				if val > D {
					D = val
				}
			}
		}

		fmt.Fprintln(out, n-1-S+D)
	}
}
```