#include <fstream>
#include <vector>
using namespace std;
void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
int partition(vector<int> &v, const int &left, const int &right, const int &pivot) {
int pivot_value = v[pivot];
swap(v[pivot], v[right]);
int store_index = left;
for (int i = left; i < right; ++i) {
if (v[i] <= pivot_value) {
swap(v[i], v[store_index]);
++store_index;
}
}
swap(v[right], v[store_index]);
return store_index;
}
int quickSelect(vector<int> &v, const int &left, const int &right, const int &k) {
if (left == right) {
return v[left];
}
int pivot = (left + right) / 2;
pivot = partition(v, left, right, pivot);
int amount = pivot - left + 1;
if (amount == k) {
return v[k];
} else {
if (k < amount) {
return quickSelect(v, left, pivot - 1, k);
} else {
return quickSelect(v, pivot + 1, right, k - amount);
}
}
}
int main() {
int N, K;
vector<int> v;
v.push_back(1337);
ifstream in("sdo.in");
in >> N >> K;
for (int i = 0; i < N; ++i) {
int val;
in >> val;
v.push_back(val);
}
in.close();
ofstream out("sdo.out");
out << quickSelect(v, 1, N, K);
out.close();
return 0;
}