//버블, 선택, 삽입 ㄴㄴ
//메모이제이션 -> 입력 데이터의 범위가 주어졌을때만!
/*#include <stdio.h>
int j,i,s,n,a[100001]={};
int main()
{
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&s);
a[s]++;
}
for(i=0;i<=100000;i++)
{
// i를 a[i]번 출력
for(j=1;j<=a[i];j++)
{
printf("%d ",i);
}
}
return 0;
}
*/
/*#include <stdio.h>
int a[10001];
int n,i,j,temp;
int main()
{
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
for(i=1;i<n;i++)
{
for(j=1;j<=n-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=1;i<=n;i++)
{
printf("%d\n",a[i]);
}
}*/
/*#include <stdio.h>
int a[6],i,j,temp,sum=0;
int main()
{
for(i=1;i<=5;i++)
{
scanf("%d",&a[i]);
sum=sum+a[i];
}
for(i=1;i<5;i++)
{
for(j=1;j<=5-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
printf("%d\n",sum/5);
printf("%d",a[3]);
return 0;
}*/
/*
#include <stdio.h>
int f(int n)
{
if(n==1 || n==2) return 1; //종료조건
return f(n-1)+f(n-2); //재귀호출
}
int main()
{
printf("%d",f(6));
}
f(n) : 1 ~ n 합 리턴
: (1 ~ n-1합 + n ) 리턴
: ( f(n-1) + n) 리턴
*/
/*#include <stdio.h>
int f(int a)
{
if(a==1)
{
return 1;
}
else
{
return f(a-1)+a;
}
}
int main()
{
int a;
scanf("%d",&a);
printf("%d",f(a));
return 0;
}
이분 (두개로 나누어서)
탐색 (원하는 숫자 찾기)
이분 = 이진 = binary
탐색 = search
정렬이 되어있을때만 가능 !!
*/
//bs(s,e,k) : arr[s] ~ arr[e] 에서 k값의 위치 리턴 없다면 0 리턴
//
//int bs(int s, int e, int k)
//{
// int mid = (s+e)/2;
// if(s>e) return -1; //종료조건 : 못찾았따면!
// if(arr[mid]==k) return mid;
// else if(arr[mid]>k) return bs(s,mid-1,k);
// else if(arr[mid]<k) return bs(mid+1,e,k);
//}
#include <stdio.h>
int arr[1000001];
int bs(int s,int e,int k)
{
int mid=(s+e)/2;
if(s>e) return -1;
if(arr[mid]==k) return mid;
else if(arr[mid]>k) return bs(s,mid-1,k);
else if(arr[mid]<k) return bs(mid+1,e,k);
}
int main()
{
int a,i,f;
scanf("%d %d",&a,&k);
for(i=1;i<=3;i++)
{
scanf("%d",&f);
}
printf("%d",bs(k));
return 0;
}