#include <iostream>
#include <algorithm>
using namespace std;
int a[5000001];
int n,k;
void dive(int l,int r)
{
int i=l,j=r,mid=a[(l+r)/2];
while(i<=j)
{
while(a[i]<mid) i++;//一直i++直到遇到第一个大于等于mid的数a[i]
while(a[j]>mid) j--;//一直j--直到遇到第一个小于等于mid的数a[j]
if(i<=j)
{
swap(a[i],a[j]);//交换在mid前遇到的比mid大的数和在mid后遇到的比mid小的数
i++;
j--;
}
}// 使得mid前面的数都小于mid,mid后面的数都大于mid(mid的值在循环中也可能发生变化
//对于k的值分三种情况
if(k<=j)//k在j前面
dive(l,j);
else if(k>=i)//k在i后面
dive(i,r);
else if(k>=j&&k<=i)//k在i,j中间(k=i=j),a[k]=mid
return;
}
int main()
{
std::ios::sync_with_stdio(false);
cin >> n >> k;
for(int i=0;i<n;i++)
{
cin >> a[i];
}
dive(0,n-1);
cout <<a[k] << endl;
}