← Home
For problem statement at 0-999/100-199/120-129/128/problemD.txt this is a correct solution, but verifier at 0-999/100-199/120-129/128/verifierD.go ends with All tests passed can you fix the verifier?  ```go
package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
	"strconv"
)

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Split(bufio.ScanWords)

	scanner.Scan()
	n, _ := strconv.Atoi(scanner.Text())

	arr := make([]int, n)
	for i := 0; i < n; i++ {
		scanner.Scan()
		arr[i], _ = strconv.Atoi(scanner.Text())
	}

	sort.Ints(arr)

	for i := 1; i < n; i++ {
		if arr[i]-arr[i-1] > 1 {
			fmt.Println("NO")
			return
		}
	}

	min := arr[0]
	max := arr[n-1]

	if min == max {
		fmt.Println("NO")
		return
	}

	k := max - min + 1
	f := make([]int, k)

	j := 0
	for i := 0; i < n; i++ {
		if arr[i] == min+j {
			f[j]++
		} else {
			j++
			if j >= k || arr[i] != min+j {
				fmt.Println("NO")
				return
			}
			f[j]++
		}
	}

	if f[0] > f[1] || f[k-1] > f[k-2] {
		fmt.Println("NO")
		return
	}

	x := 2 * f[0]
	for i := 1; i < k-1; i++ {
		x = 2*f[i] - x
		if x <= 0 {
			fmt.Println("NO")
			return
		}
	}

	if x == 2*f[k-1] {
		fmt.Println("YES")
	} else {
		fmt.Println("NO")
	}
}
```