#include <iostream>
#include <vector>
using namespace std;
vector<long long> v;
long long find_kth(int left, int right, int k) {
int begin = left;
int cur = begin + 1;
int end = right;
long long key = v[left];
while (cur <= end) {
if (v[cur] > key) {
swap(v[cur], v[end]);
end--;
} else if (v[cur] < key) {
swap(v[cur], v[begin]);
begin++;
cur++;
} else {
cur++;
}
}
int c1 = begin - left;
int c2 = end - begin + 1;
if (k <= c1) return find_kth(left, begin - 1, k);
else if (k <= c1 + c2) return key;
else return find_kth(end + 1, right, k - c1 - c2);
}
int main() {
int n, k;
cin >> n >> k;
k++;
v.resize(n);
for (int i = 0; i < n; i++) scanf("%lld", &v[i]);
cout << find_kth(0, n - 1, k) << endl;
return 0;
}
#include <iostream>
using namespace std;
const int N = 2e5 + 10;
int n;
int a[N];
int dfs(int l, int r) {
if (l == r) return a[l];
int mid = (l + r) >> 1;
int ret = max(dfs(l, mid), dfs(mid + 1, r));
int suml = a[mid], sumr = a[mid + 1];
int maxl = suml, maxr = sumr;
for (int i = mid - 1; i >= l; i--) {
suml += a[i];
maxl = max(maxl, suml);
}
for (int i = mid + 2; i <= r; i++) {
sumr += a[i];
maxr = max(maxr, sumr);
}
return max(maxr + maxl, ret);
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
cout << dfs(1, n) << endl;
return 0;
}
#include <iostream>
#include <vector>
using namespace std;
void dfs(int a, int b, int len, int x, int y) {
if (len == 1) return;
len /= 2;
if (x < a + len && y < b + len) {
cout << a + len << " " << b + len << " " << "1" << endl;
dfs(a, b, len, x, y);
dfs(a, b + len, len, a + len - 1, b + len);
dfs(a + len, b, len, a + len, b + len - 1);
dfs(a + len, b + len, len, a + len, b + len);
} else if (x < a + len && y >= b + len) {
cout << a + len << " " << b + len - 1 << " " << "2" << endl;
dfs(a, b, len, a + len - 1, b + len - 1);
dfs(a, b + len, len, x, y);
dfs(a + len, b, len, a + len, b + len - 1);
dfs(a + len, b + len, len, a + len, b + len);
} else if (x >= a + len && y < b + len) {
cout << a + len - 1 << " " << b + len << " " << "3" << endl;
dfs(a, b, len, a + len - 1, b + len - 1);
dfs(a, b + len, len, a + len - 1, b + len);
dfs(a + len, b, len, x, y);
dfs(a + len, b + len, len, a + len, b + len);
} else {
cout << a + len - 1 << " " << b + len - 1 << " " << "4" << endl;
dfs(a, b, len, a + len - 1, b + len - 1);
dfs(a, b + len, len, a + len - 1, b + len);
dfs(a + len, b, len, a + len, b + len - 1);
dfs(a + len, b + len, len, x, y);
}
}
int main() {
int k, x, y;
cin >> k >> x >> y;
int len = (1 << k);
dfs(1, 1, len, x, y);
return 0;
}