func findDuplicate(nums []int) int { // Binary search
	n := len(nums)
	beg, end := 1, n
	for beg < end {
		mid := (beg + end) / 2
		cnt := 0
		for i := 0; i < n; i++ {
			if nums[i] <= mid {
				cnt++
			}
		}
		if cnt <= mid {
			beg = mid + 1
		} else {
			end = mid
		}
	}
	return beg
}