"""
< 이진 탐색: 반으로 쪼개면서 탐색하기 > p, 188 ~190
- 이진 탐색(Binary Search)은 [ ★ 배열 내부의 데이터가 정렬 ★ ]되어 있어야만 사용 가능.

< 이진 탐색의 특징 >
- 데이터가 무작위일 때는 사용 x
  [ 이미 정렬되어 있다면 매우 빠르게 ] 데이터를 찾을 수 있다는 특징.
- 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 특징이 있다.

- 이진 탐색은 [ 위치를 나타내는 변수 3개를 사용 ]
  탐색하고자 하는 범위의 < 시작점, 끝점, 그리고 중간점 >
- [ 찾으려는 데이터 ]와 [ 중간점 위치에 있는 데이터를 반복적 ]으로 " 비교해서 "
  " 원하는 데이터를 찾는 게 이진 탐색 과정 ".

- 이진 탐색은 ★ 한 번 확인할 때마다 ★ 확인하는 원소의 개수가 [ 절반씩 줄어든다는 점 ]
  에서 시간 복잡도가 O(logN) 이다.
  [ 절반씩 데이터를 줄어들도록 만든다는 점 ]은 앞서 다룬 " 퀵 정렬 "과 공통점이 있다.

< 이진 탐색을 구현하는 방법 2가지 >
1. 재귀 함수를 이용
2. 단순하게 반복문을 이용하는 방법.

< 문제 > 
- [ 원소의 개수 ]와 [ 찾고자하는 값을 입력 ]받고 
- [ 찾고자 하는 데이터 인덱스 위치 값을 출력 ]하시오.
[ 입력 ]                             [ 출력 ]
10 7

1 3 5 7 9 11 13 15 17 19                4
--------------------------------------------------------

10 7 

1 3 5 6 9 11 13 15 17 19               원소가 존재하지 않습니다.

"""
# 7-2.py 재귀 함수로 구현한 [ 이진 탐색 ] 소스코드
# 이진 탐색 소스코드 구현 (재귀 함수)
def binary_search(array, target, start, end):
    if start > end:
        return None # None은 값의 부재를 나타내는 데 자주 사용
    mid = (start + end) // 2 # 중간점을 구함. -- 소수점 이하를 버림.
    # 찾은 경우 [ 중간점 인덱스 반환 ]
    if array[mid] == target:
        return mid
    # [ 중간점의 값보다 ] 찾고자 하는 값이 작은 경우 '왼쪽' 확인
    # [ 중간점 이 후의 값은 ] 필요 없으니, 끝점을 [ 중간점 -1 로 옮긴다 ].
    elif array[mid] > target:
        return binary_search(array, target, start, mid - 1) 
    # [ 중간점의 값보다 ] 찾고자 하는 값이 큰 경우 '오른쪽' 확인
    else:
        return binary_search(array, target, mid + 1, end)

# n(원소의 개수)과 target(찾고자 하는 값)을 입력 받기
n, target = list(map(int, input().split()))

# [ 전체 원소 입력 ] 받기
array = list(map(int, input().split()))

# 이진 탐색 수행 결과 출력
result = binary_search(array, target, 0, n - 1)
if result == None:
    print("원소가 존재하지 않습니다.")
else:
    print(result + 1)
