/*
#include <stdio.h>
int quick2[50001]={};
int quick[50001]={};
void qs(int s,int e)
{
if(s>=e) return ;
int pivot=s,high=e+1,low=s;
do
{
do
{
low++;
}while(quick[pivot]> quick[low]);
do
{
high--;
}while(quick[pivot]<quick[high]);
if(low<high) swap(low ,high);
} while(low<high);
swap(pivot,high);
qs(s,high-1);
qs(high+1,e);
}
void swap(int x, int y)
{
int temp=quick[x];
quick[x]=quick[y];
quick[y]=temp;
}
int bs(int s,int e,int k)
{
int mid=(s+e)/2;
if(s>e) return -1;
if(quick[mid]<k){
bs(mid+1,e,k);
}
else if(quick[mid]>k)
bs(s,mid-1,k);
else
return mid-1;
}
int main()
{
int n,i,k=0;
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&quick[i]);
}
for(i=1;i<=n;i++)
{
quick2[i]=quick[i];
}
qs(1,n);
for(i=1;i<=n;i++)
{
printf("%d ",bs(1,n,quick2[i]));
}
}
/*
int arr[50000];
//binary search 이진탐색 이분탐색
int bs(int s, int e, int k) //arr[s] ~ arr[e] 에서 k값의 위치를 리턴
{
int mid=(s+e)/2;
if(s>e) return -1; //못찾음
if(arr[mid]<k){
bs(mid+1,e,k);
}
else if(arr[mid]>k){
bs(s,mid-1,k);
}
else{
return mid;
}
}
#include <stdio.h>
int arr[1000001]={};
int find[1000001]={};
int bs(int s,int e,int k)
{
int mid=(s+e)/2;
if(s>e) return -1;
if(arr[mid]>k) bs(s,mid-1,k);
else if(arr[mid]<k) bs(mid+1,e,k);
else return mid;
}
int main()
{
int n,i,m;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&arr[i]);
scanf("%d",&m);
for(i=1;i<=m;i++)
scanf("%d",&find[i]);
for(i=1;i<=m;i++)
printf("%d ",bs(1,n,find[i]));
}
*/
#include <stdio.h>
int arr[100001]={};
int bs(int s,int e,int k)
{
int mid=(s+e)/2;
if(arr[e]<k) return e+1;
if(arr[s]>=k) return s;
if(arr[mid]>=k) bs(s,mid,k);
else if(arr[mid]<k) bs(mid+1,e,k);
}
int main()
{
int n,m,i;
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++) scanf("%d",&arr[i]);
printf("%d",bs(1,n,m));
}