/*
#include<stdio.h>
int a[100001],a1[100001];
void swap(int x, int y)
{
int data=a[x];
a[x]=a[y];
a[y]=data;
}
void qs(int s, int e)
{
if(s>=e)
return ;
int pivot=s;
int low=s,high=e+1;
do
{
do
{
high--;
}
while(a[pivot]<a[high]);
do
{
low++;
}
while(a[pivot]>a[low]);
if(low<high)
swap(low,high);
}
while(low<high);
swap(pivot,high);
qs(s,high-1);
qs(high+1,e);
}
//binary_search
int bs(int s, int e, int k) //s번째부터 e번째까지중에 k값의 위치 리턴
{
int mid=(s+e)/2;
if(s>e) return -1;
if(a[mid]==k)
{
return mid;
}
else if(a[mid]>k)
{
bs(s,mid-1,k);
}
else
{
bs(mid+1,e,k);
}
}
int main()
{
int n, i, j;
scanf("%d", &n);
for(i=1; i<=n; i++)
{
scanf("%d", &a[i]);
a1[i]=a[i];
}
qs(1,n);
for(i=1; i<=n; i++)
printf("%d ", bs(1,n,a1[i])-1);
return 0;
}
*/
#include<stdio.h>
int a[100001], n;
//binary_search
int bs(int s, int e, int k) //s번째부터 e번째까지중에 k값의 위치 리턴
{
int mid=(s+e)/2;
if(s>e)
{
return n+1;
}
if(s==e)
{
if(a[mid]>=k)
return mid;
else
return n+1;
}
if(a[mid]==k)
{
bs(s,mid,k);
}
else if(a[mid]>k)
{
bs(s,mid,k);
}
else
{
bs(mid+1,e,k);
}
}
int main()
{
int k, i;
scanf("%d %d", &n, &k);
for(i=1; i<=n; i++)
{
scanf("%d", &a[i]);
}
printf("%d", bs(1, n, k));
return 0;
}
/*
#include<stdio.h>
int a[1000001];
int bs(int s, int e, int k)
{
int mid=(s+e)/2;
if(s>e) return -1;
if(a[mid]==k)
{
return mid;
}
else if(a[mid]>k)
{
bs(s,mid-1,k);
}
else
{
bs(mid+1,e,k);
}
}
int main()
{
int n, n1, i, k;
scanf("%d", &n);
for(i=1; i<=n; i++)
{
scanf("%d", &a[i]);
}
scanf("%d", &n1);
for(i=1; i<=n1; i++)
{
scanf("%d", &k);
printf("%d ", bs(1,n,k));
}
return 0;
}
*/