"""练习 10:在递增列表中用二分查找目标值第一次出现的位置(从 0 开始)。 输入:第一行 n,第二行 n 个递增整数,第三行目标值 x。 学习说明: - 二分查找要求列表已经升序排列;每轮把可能范围缩小约一半。 - [left, right) 是左闭右开区间;middle 是当前中间下标。 - 若中间值小于 target,答案只能在右半边;否则保留中间及左侧,继续找第一次出现的位置。 - 循环结束时 left 是第一个不小于 target 的位置;再检查它是否真的等于 target。 - 输出的下标从 0 开始;列表中找不到目标时输出 -1。 """ n = int(input()) values = list(map(int, input().split()))[:n] target = int(input()) left, right = 0, n while left < right: middle = (left + right) // 2 if values[middle] < target: left = middle + 1 else: right = middle if left < n and values[left] == target: print(left) else: print(-1)