#include <fstream>
#include <vector>
int select_impl(std::vector<int>& v, int low, int high, int k)
{
auto lt = low, gt = high, i = low;
auto pivIdx = rand() % (high - low + 1) + low;
std::swap(v[lt], v[pivIdx]);
auto pivot = v[lt];
while (i <= gt) {
if (v[i] < pivot)
std::swap(v[i++], v[lt++]);
else if (v[i] > pivot)
std::swap(v[i], v[gt--]);
else
++i;
}
return k >= lt && k <= gt ? v[lt] :
k > gt ? select_impl(v, gt + 1, high, k) :
select_impl(v, low, lt - 1, k);
}
int select(std::vector<int>& v, int k)
{
std::srand(time(nullptr));
return select_impl(v, 0, v.size() - 1, k);
}
int main()
{
std::ifstream fin{"sdo.in"};
std::ofstream fout{"sdo.out"};
int N, K;
fin >> N >> K;
std::vector<int> v(N);
for (auto &i : v)
fin >> i;
fout << select(v, K - 1) << std::endl;
return 0;
}