/// CREDITS TO: Strimbu Alexandru Sagunistu
#include <fstream>
#include <algorithm>
void lol(){
int x=0;
x++;
}
using namespace std;
int n,sct,a[3000005],m[3000005];
ifstream fin("sdo.in");
ofstream fout("sdo.out");
void read()
{
fin>>n>>sct;
for(int i=0;i<n;i++)
fin>>a[i];
}
int e[3000005];
int part(int a[],int p,int q,int x)
{
int l=p-1,r=q;
for(int j=p;j<q;j++){
if(a[j]<x)
e[++l]=a[j];
if(a[j]>x)
e[--r]=a[j];
}
for(int i=l+1;i<r;i++)
e[i]=x;
for(int i=p;i<q;i++)
a[i]=e[i];
return l+1;
}
int find_median(int a[],int p,int q,int pz)
{
sort(a+p,a+q);
return a[pz];
}
int select(int a[],int p,int q,int k)
{
if(p==4)
lol();
int s=0,i,r,k1,k2;
int n = q-p;
if(q-p<=5)
return find_median(a,p,q,p+k);
for(i=0;i<n/5;i++)
{
m[i]=find_median(a,5*i,5*(i+1),p+2+5*i);
s++;
}
m[s]=find_median(a,5*i,n,p+(5*i+n)/2);
r=select(m,0,s+1,(s+1)/2);
r=part(a,p,q,r);
k1=r-p;
if(k==k1)
return a[k];
else
if(k<k1)
return select(a,p,k1,k);
else
return select(a,k1+1,q,k-k1-1);
}
int main()
{
read();
//fout<<part(a,0,n,a[0])<<"\n";
fout<<select(a,0,n,sct-1);
return 0;
}