#include <bits/stdc++.h>
using namespace std;
const int MAX = 1e5 + 5;
int n, q;
pair<int, int> a[MAX];
int u[MAX], v[MAX], k[MAX];
int l[MAX], r[MAX];
int bit[MAX];
void update(int idx, int val) {
for (; idx <= n; idx += idx & -idx) bit[idx] += val;
}
int query_bit(int idx) {
int sum = 0;
for (; idx > 0; idx -= idx & -idx) sum += bit[idx];
return sum;
}
int get(int l, int r) {
return query_bit(r) - query_bit(l - 1);
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> n >> q;
for (int i = 1; i <= n; i++) {
cin >> a[i].first;
a[i].second = i;
}
sort(a + 1, a + n + 1);
for (int i = 1; i <= q; i++) {
cin >> u[i] >> v[i] >> k[i];
l[i] = 1; r[i] = n;
}
for (int t = 0; t < 20; t++) {
vector<pair<int, int>> b;
for (int i = 1; i <= q; i++) {
if (l[i] < r[i]) {
b.push_back({(l[i] + r[i]) / 2, i});
}
}
if (b.empty()) break;
sort(b.begin(), b.end());
memset(bit, 0, sizeof bit);
int j = 0, sz = b.size();
for (int i = 1; i <= n; i++) {
while (j < sz && b[j].first < i) {
int id = b[j].second;
if (get(u[id], v[id]) >= k[id])
r[id] = b[j].first;
else l[id] = b[j].first + 1;
j++;
}
update(a[i].second, 1);
}
while (j < sz) {
int id = b[j].second;
if (get(u[id], v[id]) >= k[id])
r[id] = b[j].first;
else l[id] = b[j].first + 1;
j++;
}
}
for (int i = 1; i <= q; i++) {
cout << a[l[i]].first << "\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE1BWCA9IDFlNSArIDU7CgoKaW50IG4sIHE7CnBhaXI8aW50LCBpbnQ+IGFbTUFYXTsKaW50IHVbTUFYXSwgdltNQVhdLCBrW01BWF07CmludCBsW01BWF0sIHJbTUFYXTsKaW50IGJpdFtNQVhdOwoKdm9pZCB1cGRhdGUoaW50IGlkeCwgaW50IHZhbCkgewogICAgZm9yICg7IGlkeCA8PSBuOyBpZHggKz0gaWR4ICYgLWlkeCkgYml0W2lkeF0gKz0gdmFsOwp9CgppbnQgcXVlcnlfYml0KGludCBpZHgpIHsKICAgIGludCBzdW0gPSAwOwogICAgZm9yICg7IGlkeCA+IDA7IGlkeCAtPSBpZHggJiAtaWR4KSBzdW0gKz0gYml0W2lkeF07CiAgICByZXR1cm4gc3VtOwp9CgppbnQgZ2V0KGludCBsLCBpbnQgcikgewogICAgcmV0dXJuIHF1ZXJ5X2JpdChyKSAtIHF1ZXJ5X2JpdChsIC0gMSk7Cn0KCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwoKICAgIGNpbiA+PiBuID4+IHE7CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgY2luID4+IGFbaV0uZmlyc3Q7CiAgICAgICAgYVtpXS5zZWNvbmQgPSBpOwogICAgfQogICAgc29ydChhICsgMSwgYSArIG4gKyAxKTsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBxOyBpKyspIHsKICAgICAgICBjaW4gPj4gdVtpXSA+PiB2W2ldID4+IGtbaV07CiAgICAgICAgbFtpXSA9IDE7IHJbaV0gPSBuOwogICAgfQoKICAgIGZvciAoaW50IHQgPSAwOyB0IDwgMjA7IHQrKykgewogICAgICAgIHZlY3RvcjxwYWlyPGludCwgaW50Pj4gYjsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBxOyBpKyspIHsKICAgICAgICAgICAgaWYgKGxbaV0gPCByW2ldKSB7CiAgICAgICAgICAgICAgICBiLnB1c2hfYmFjayh7KGxbaV0gKyByW2ldKSAvIDIsIGl9KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGIuZW1wdHkoKSkgYnJlYWs7CgogICAgICAgIHNvcnQoYi5iZWdpbigpLCBiLmVuZCgpKTsKCiAgICAgICAgbWVtc2V0KGJpdCwgMCwgc2l6ZW9mIGJpdCk7CgogICAgICAgIGludCBqID0gMCwgc3ogPSBiLnNpemUoKTsKCiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgICAgIHdoaWxlIChqIDwgc3ogJiYgYltqXS5maXJzdCA8IGkpIHsKICAgICAgICAgICAgICAgIGludCBpZCA9IGJbal0uc2Vjb25kOwogICAgICAgICAgICAgICAgaWYgKGdldCh1W2lkXSwgdltpZF0pID49IGtbaWRdKQogICAgICAgICAgICAgICAgICAgIHJbaWRdID0gYltqXS5maXJzdDsKICAgICAgICAgICAgICAgIGVsc2UgbFtpZF0gPSBiW2pdLmZpcnN0ICsgMTsKICAgICAgICAgICAgICAgIGorKzsKICAgICAgICAgICAgfQogICAgICAgICAgICB1cGRhdGUoYVtpXS5zZWNvbmQsIDEpOwogICAgICAgIH0KCiAgICAgICAgd2hpbGUgKGogPCBzeikgewogICAgICAgICAgICBpbnQgaWQgPSBiW2pdLnNlY29uZDsKICAgICAgICAgICAgaWYgKGdldCh1W2lkXSwgdltpZF0pID49IGtbaWRdKQogICAgICAgICAgICAgICAgcltpZF0gPSBiW2pdLmZpcnN0OwogICAgICAgICAgICBlbHNlIGxbaWRdID0gYltqXS5maXJzdCArIDE7CiAgICAgICAgICAgIGorKzsKICAgICAgICB9CiAgICB9CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gcTsgaSsrKSB7CiAgICAgICAgY291dCA8PCBhW2xbaV1dLmZpcnN0IDw8ICJcbiI7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K