#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
// void print(vector<int> &v)
// {
// for (auto el : v)
// {
// cout << el << " ";
// }
// cout << endl;
// }
// void print(vector<int> &v, int l, int r)
// {
// for (auto el : v)
// {
// cout << el << " ";
// }
// cout << "left: " << l << " right: " << r << endl;
// }
// void print_v(vector<int> &v, int start, int end, int k)
// {
// for (int i = 0; i < start; i++)
// {
// cout << v[i] << " ";
// }
// cout << "[ ";
// for (int i = start; i <= end; i++)
// {
// cout << v[i] << " ";
// }
// cout << "] ";
// for (int i = end + 1; i < v.size(); i++)
// {
// cout << v[i] << " ";
// }
// cout << " | k=" << k << endl;
// }
int partition(vector<int> &v, int start, int end, int pivot)
{
// cout << "partition start => ";
// print_v(v, start, end, pivot);
int p = v[pivot];
swap(v[end], v[pivot]);
// print(v);
int left = start;
int right = end - 1;
while (left < right)
{
if (v[left] > p)
{
swap(v[left], v[right]);
right--;
}
else
{
left++;
}
// print(v, left, right);
}
swap(v[left + 1], v[end]);
// print(v, left, right);
// vector<int> larger;
// int equalCount = 0;
// cout << "partition end" << endl;
return left;
}
int cnt = 0;
int quickselect(vector<int> &v, int start, int end, int k)
{
// if (n == 1)
// {
// return v[0];
// }
// auto pivot = 4;
// print(v);
// cout << "pivot: " << v[pivot] << endl;
// auto p = partition(v, pivot);
// print(v);
// cout << "pivot " << v[p] << endl;
// return 0;
if (start == end)
{
return v[start];
}
// print_v(v, start, end, k);
int pivot = start;
// cout << "pivot=" << pivot << endl;
int new_pivot = partition(v, start, end, pivot);
// cout << "new_pivot=" << new_pivot << endl;
// print_v(v, start, end, k);
// cout << endl;
if (new_pivot == k)
{
return new_pivot;
}
else if (new_pivot > k)
{
return quickselect(v, start, new_pivot - 1, k);
}
else
{
return quickselect(v, new_pivot + 1, end, k);
}
}
int main()
{
ifstream in("sdo.in");
ofstream out("sdo.out");
int n, k;
in >> n >> k;
vector<int> v;
v.resize(n);
for (int i = 0; i < n; i++)
{
in >> v[i];
}
out << v[quickselect(v, 0, n - 1, k - 1)];
// vector<int> v = {2, 1, 3, 4, 5, 6};
// auto p = partition(v, 0, v.size() - 1, 0);
// cout << v[p];
return 0;
}