#include <bits/stdc++.h>
using namespace std;
#define fst first
#define snd second
#define all(c) ((c).begin()), ((c).end())
#define endl '\n'
const int INF = 1 << 30;
const int MAXN = 1e5+5;
const int MAXH = 18;
const int MAXUPD = 1e5+5;
typedef int ll;//long long
struct Node {
ll value;
Node* left;
Node* right;
Node() : value(0), left(nullptr), right(nullptr) {}
void *operator new(size_t size);
};
Node buffer[2*MAXN+MAXH*MAXUPD];
void * Node::operator new(size_t size) {
static int ptr = 0;
return &buffer[ptr++];
}
ll aggregate_function(ll left, ll right){
return left + right;
}
Node* build(vector<ll> &arr, int l, int r){
Node* node = new Node();
if(l == r) {
node->value = arr[l];
return node;
}
int m = (l + r) / 2;
node->left = build(arr, l, m);
node->right = build(arr, m+1, r);
node->value = aggregate_function(node->left->value, node->right->value);
return node;
}
ll query(Node* root, int start, int end, int rootStart, int rootEnd) {
if(start > end) return 0;
if(rootStart == start && rootEnd == end)
return root->value;
int m = (rootStart+rootEnd)/2;
ll ans = aggregate_function(
query(root->left,start,min(m,end), rootStart, m),
query(root->right,max(m+1,start),end, m+1, rootEnd));
return ans;
}
Node* update(Node* root, int pos, ll value, int rootStart, int rootEnd) {
Node* node = new Node();
if(rootStart == rootEnd) {
node->value = value;
return node;
}
int m = (rootStart + rootEnd) / 2;
if(pos <= m) {
node->left = update(root->left, pos, value, rootStart, m);
node->right = root->right;
} else {
node->right = update(root->right, pos, value, m+1, rootEnd);
node->left = root->left;
}
node->value = aggregate_function(node->left->value, node->right->value);
return node;
}
void solve() {
int n,m;
cin >> n >> m;
vector<ll> org(n+1);
vector<pair<ll,ll>> aux(n+1, {-INF,-INF});
vector<ll> compress(n+1,0);
vector<Node*> versions(n+1);
versions[0] = build(compress, 0, n);
for(int i = 1; i <= n; i++) {
cin >> org[i];
aux[i].fst = org[i];
aux[i].snd = i;
}
sort(all(aux));
vector<ll> backToNormal(n+1,0);
for(int i = 1; i <= n; i++) {
compress[aux[i].snd] = i;
backToNormal[i] = aux[i].fst;
}
// for(int i = 1; i <= n; i++) {
// cout << compress[i] << " ";
// }
// cout << endl;
for(int i = 1; i <= n; i++) {
versions[i] = update(versions[i-1], compress[i], 1, 0, n);
}
while(m--) {
ll i,j,k;
cin >> i >> j >> k;
ll l = 1;
ll r = n;
ll ans = -1;
Node* L = versions[i-1];
Node* R = versions[j];
int cur = k;
int curStart = 0, curEnd = n;
while(curStart!=curEnd) {
int cnt = R->left->value - L->left->value;
int mid = (curStart+curEnd)/2;
if(cnt >= cur){
L = L->left;
R = R->left;
curEnd = mid;
}else{
L = L->right;
R = R->right;
cur -= cnt;
curStart = mid+1;
}
}
cout << backToNormal[curStart] << endl;
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t = 1;
//cin >> t;
while(t--)
solve();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBmc3QgZmlyc3QKI2RlZmluZSBzbmQgc2Vjb25kCiNkZWZpbmUgYWxsKGMpICgoYykuYmVnaW4oKSksICgoYykuZW5kKCkpCiNkZWZpbmUgZW5kbCAnXG4nCgpjb25zdCBpbnQgSU5GID0gMSA8PCAzMDsKY29uc3QgaW50IE1BWE4gPSAxZTUrNTsKY29uc3QgaW50IE1BWEggPSAxODsKY29uc3QgaW50IE1BWFVQRCA9IDFlNSs1OwoKdHlwZWRlZiBpbnQgbGw7Ly9sb25nIGxvbmcKCnN0cnVjdCBOb2RlIHsKICBsbCB2YWx1ZTsKICBOb2RlKiBsZWZ0OwogIE5vZGUqIHJpZ2h0OwoKICBOb2RlKCkgOiB2YWx1ZSgwKSwgbGVmdChudWxscHRyKSwgcmlnaHQobnVsbHB0cikge30KICB2b2lkICpvcGVyYXRvciBuZXcoc2l6ZV90IHNpemUpOwp9OwoKTm9kZSBidWZmZXJbMipNQVhOK01BWEgqTUFYVVBEXTsKdm9pZCAqIE5vZGU6Om9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSkgewogIHN0YXRpYyBpbnQgcHRyID0gMDsKICByZXR1cm4gJmJ1ZmZlcltwdHIrK107Cn0KCmxsIGFnZ3JlZ2F0ZV9mdW5jdGlvbihsbCBsZWZ0LCBsbCByaWdodCl7CiAgcmV0dXJuIGxlZnQgKyByaWdodDsKfQoKTm9kZSogYnVpbGQodmVjdG9yPGxsPiAmYXJyLCBpbnQgbCwgaW50IHIpewogIE5vZGUqIG5vZGUgPSBuZXcgTm9kZSgpOwogIGlmKGwgPT0gcikgewogICAgbm9kZS0+dmFsdWUgPSBhcnJbbF07CiAgICByZXR1cm4gbm9kZTsKICB9CgogIGludCBtID0gKGwgKyByKSAvIDI7CiAgbm9kZS0+bGVmdCA9IGJ1aWxkKGFyciwgbCwgbSk7CiAgbm9kZS0+cmlnaHQgPSBidWlsZChhcnIsIG0rMSwgcik7CiAgbm9kZS0+dmFsdWUgPSBhZ2dyZWdhdGVfZnVuY3Rpb24obm9kZS0+bGVmdC0+dmFsdWUsIG5vZGUtPnJpZ2h0LT52YWx1ZSk7CiAgcmV0dXJuIG5vZGU7Cn0KCmxsIHF1ZXJ5KE5vZGUqIHJvb3QsIGludCBzdGFydCwgaW50IGVuZCwgaW50IHJvb3RTdGFydCwgaW50IHJvb3RFbmQpIHsKICBpZihzdGFydCA+IGVuZCkgcmV0dXJuIDA7CiAgaWYocm9vdFN0YXJ0ID09IHN0YXJ0ICYmIHJvb3RFbmQgPT0gZW5kKQogICAgcmV0dXJuIHJvb3QtPnZhbHVlOwoKICBpbnQgbSA9IChyb290U3RhcnQrcm9vdEVuZCkvMjsKICBsbCBhbnMgPSBhZ2dyZWdhdGVfZnVuY3Rpb24oCiAgCXF1ZXJ5KHJvb3QtPmxlZnQsc3RhcnQsbWluKG0sZW5kKSwgcm9vdFN0YXJ0LCBtKSwKICAJcXVlcnkocm9vdC0+cmlnaHQsbWF4KG0rMSxzdGFydCksZW5kLCBtKzEsIHJvb3RFbmQpKTsKICByZXR1cm4gYW5zOwp9CgpOb2RlKiB1cGRhdGUoTm9kZSogcm9vdCwgaW50IHBvcywgbGwgdmFsdWUsIGludCByb290U3RhcnQsIGludCByb290RW5kKSB7CiAgTm9kZSogbm9kZSA9IG5ldyBOb2RlKCk7CiAgaWYocm9vdFN0YXJ0ID09IHJvb3RFbmQpIHsKICAgIG5vZGUtPnZhbHVlID0gdmFsdWU7CiAgICByZXR1cm4gbm9kZTsKICB9CiAgaW50IG0gPSAocm9vdFN0YXJ0ICsgcm9vdEVuZCkgLyAyOwogIGlmKHBvcyA8PSBtKSB7CiAgICBub2RlLT5sZWZ0ID0gdXBkYXRlKHJvb3QtPmxlZnQsIHBvcywgdmFsdWUsIHJvb3RTdGFydCwgbSk7CiAgICBub2RlLT5yaWdodCA9IHJvb3QtPnJpZ2h0OwogIH0gZWxzZSB7CiAgICBub2RlLT5yaWdodCA9IHVwZGF0ZShyb290LT5yaWdodCwgcG9zLCB2YWx1ZSwgbSsxLCByb290RW5kKTsKICAgIG5vZGUtPmxlZnQgPSByb290LT5sZWZ0OwogIH0KICBub2RlLT52YWx1ZSA9IGFnZ3JlZ2F0ZV9mdW5jdGlvbihub2RlLT5sZWZ0LT52YWx1ZSwgbm9kZS0+cmlnaHQtPnZhbHVlKTsKICByZXR1cm4gbm9kZTsKfQoKdm9pZCBzb2x2ZSgpIHsKICBpbnQgbixtOyAKICBjaW4gPj4gbiA+PiBtOwogIHZlY3RvcjxsbD4gb3JnKG4rMSk7CiAgdmVjdG9yPHBhaXI8bGwsbGw+PiBhdXgobisxLCB7LUlORiwtSU5GfSk7CiAgdmVjdG9yPGxsPiBjb21wcmVzcyhuKzEsMCk7CiAgdmVjdG9yPE5vZGUqPiB2ZXJzaW9ucyhuKzEpOwogIHZlcnNpb25zWzBdID0gYnVpbGQoY29tcHJlc3MsIDAsIG4pOwoKICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgY2luID4+IG9yZ1tpXTsKICAgIGF1eFtpXS5mc3QgPSBvcmdbaV07CiAgICBhdXhbaV0uc25kID0gaTsKICB9CgogIHNvcnQoYWxsKGF1eCkpOwoKICB2ZWN0b3I8bGw+IGJhY2tUb05vcm1hbChuKzEsMCk7CiAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgIGNvbXByZXNzW2F1eFtpXS5zbmRdID0gaTsKICAgIGJhY2tUb05vcm1hbFtpXSA9IGF1eFtpXS5mc3Q7CiAgfQogIC8vIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgLy8gICBjb3V0IDw8IGNvbXByZXNzW2ldIDw8ICIgIjsKICAvLyB9CiAgLy8gY291dCA8PCBlbmRsOwoKCiAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgIHZlcnNpb25zW2ldID0gdXBkYXRlKHZlcnNpb25zW2ktMV0sIGNvbXByZXNzW2ldLCAxLCAwLCBuKTsKICB9CgogIHdoaWxlKG0tLSkgewogICAgbGwgaSxqLGs7CiAgICBjaW4gPj4gaSA+PiBqID4+IGs7CiAgICBsbCBsID0gMTsKICAgIGxsIHIgPSBuOwogICAgbGwgYW5zID0gLTE7CiAgICBOb2RlKiBMID0gdmVyc2lvbnNbaS0xXTsKICAgIE5vZGUqIFIgPSB2ZXJzaW9uc1tqXTsKICAgIGludCBjdXIgPSBrOwogICAgaW50IGN1clN0YXJ0ID0gMCwgY3VyRW5kID0gbjsKICAgIHdoaWxlKGN1clN0YXJ0IT1jdXJFbmQpIHsKICAgICAgaW50IGNudCA9IFItPmxlZnQtPnZhbHVlIC0gTC0+bGVmdC0+dmFsdWU7CiAgICAgIGludCBtaWQgPSAoY3VyU3RhcnQrY3VyRW5kKS8yOwogICAgICBpZihjbnQgPj0gY3VyKXsKICAgICAgCUwgPSBMLT5sZWZ0OwogICAgICAJUiA9IFItPmxlZnQ7CiAgICAgIAljdXJFbmQgPSBtaWQ7CiAgICAgIH1lbHNlewogICAgICAJTCA9IEwtPnJpZ2h0OwogICAgICAJUiA9IFItPnJpZ2h0OwogICAgICAJY3VyIC09IGNudDsKICAgICAgCWN1clN0YXJ0ID0gbWlkKzE7CiAgICAgIH0KICAgIH0KICAgIGNvdXQgPDwgYmFja1RvTm9ybWFsW2N1clN0YXJ0XSA8PCBlbmRsOwogIH0KfQoKaW50IG1haW4oKSB7CiAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogIGNpbi50aWUobnVsbHB0cik7CiAgaW50IHQgPSAxOwogIC8vY2luID4+IHQ7CiAgd2hpbGUodC0tKQogICAgc29sdmUoKTsKfQo=