//快选
#include<stdio.h>
int kuaixuan(int q[], int l, int r, int k)
{//快选 数组 左边界 右边界 第k个数
if (l == r) return q[l];//如果左边界等于右边界,直接返回那个数
int x = q[l], i = l-1, j = r+1;
//确定中间值x 左边界 右边界
while (i < j)
{//当i>=j循环结束
while (q[++i] < x);//如果左边的数大于x停下
while (q[--j] > x);//如果右边的数小于x停下
if (i < j) swap(&q[i], &q[j]);
//如果i在j的左边,使其对应的两个数交换
}
int s1 = j - l + 1;//求出左边界的值
if (k <= s1) return kuaixuan(q, l, j, k);
//k<=左边界 递归求左边
else return kuaixuan(q, j + 1, r, k - s1);
//k>左边界 递归求右边
}
int main()
{
int n,k;//有n个数,求第k小的数
scanf("%d%d", &n,&k);
int q[100000];
for (int i = 0; i < n; i++) scanf("%d", &q[i]);
printf("%d", kuaixuan(q, 0, n - 1, k));
return 0;
}