package main

import (
	"slices"
)

func specialArray(nums []int) int {
	bsearch := func(key int) int {
		l := 0
		r := len(nums) - 1

		idx := len(nums)
		for l <= r {
			mid := (l + r) / 2

			if nums[mid] >= key {
				idx = mid
				r = mid - 1
			} else {
				l = mid + 1
			}
		}

		return idx
	}

	slices.Sort(nums)
	for i, _ := range nums {
		k := bsearch(i + 1)

		if len(nums)-k == i+1 {
			return i + 1
		}
	}

	return -1
}