#include <bits/stdc++.h>
using namespace std;
const int MAX = 100005;
const int LIM = 263005;
#define inchar getchar_unlocked
#define outchar(x) putchar_unlocked(x)
template<typename T> void inpos(T &x){x=0;register T c=inchar();while(((c<48)||(c>57))&&(c!='-'))c=inchar();bool neg=false;if(c=='-')neg=true;for(;c<48||c>57;c=inchar());for(;c>47&&c<58;c=inchar())x=(x<<3)+(x<<1)+(c&15);if(neg)x=-x;}
template<typename T> void outpos(T n){if(n<0){outchar('-');n*=-1;}char snum[65];int i=0;do {snum[i++]=n%10+'0';n/=10;}while(n);i=i-1;while(i>=0)outchar(snum[i--]);outchar('\n');}
int inp[MAX];
vector< pair<int,int> > nums;
vector<int> seg[LIM];
void build_merge_sort(int t, int i, int j) {
if (i==j) {
seg[t].push_back(nums[i].second);
return ;
}
int left = t<<1, right = left|1, mid = (i+j)/2;
build_merge_sort(left, i, mid);
build_merge_sort(right, mid+1, j);
merge(seg[left].begin(), seg[left].end(), seg[right].begin(), seg[right].end(), back_inserter(seg[t]));
}
int query_kth(int t, int i, int j, int l, int r, int k) {
if (i == j) {
return seg[t][0];
}
int left = t<<1, right = left|1, mid = (i+j)/2, total;
auto it = upper_bound(seg[left].begin(), seg[left].end(), r);
total = it - lower_bound(seg[left].begin(), seg[left].end(), l);
if (total >= k) {
return query_kth(left, i, mid, l, r, k);
}
else {
return query_kth(right, mid+1, j, l, r, k-total);
}
}
int main() {
int n, m, x, y, k, idx, ans;
inpos(n), inpos(m);
for(int i=0; i<n; ++i) {
inpos(x);
inp[i] = x;
nums.push_back(make_pair(x, i));
}
sort(nums.begin(), nums.end());
build_merge_sort(1, 0, n-1);
while (m--) {
inpos(x), inpos(y), inpos(k);
--x; --y;
idx = query_kth(1, 0, n-1, x, y, k);
ans = inp[idx];
outpos(ans);
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKY29uc3QgaW50IE1BWCA9IDEwMDAwNTsKY29uc3QgaW50IExJTSA9IDI2MzAwNTsKIAojZGVmaW5lIGluY2hhciAgICAgICAgICBnZXRjaGFyX3VubG9ja2VkCiNkZWZpbmUgb3V0Y2hhcih4KSAgICAgIHB1dGNoYXJfdW5sb2NrZWQoeCkKIAp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGlucG9zKFQgJngpe3g9MDtyZWdpc3RlciBUIGM9aW5jaGFyKCk7d2hpbGUoKChjPDQ4KXx8KGM+NTcpKSYmKGMhPSctJykpYz1pbmNoYXIoKTtib29sIG5lZz1mYWxzZTtpZihjPT0nLScpbmVnPXRydWU7Zm9yKDtjPDQ4fHxjPjU3O2M9aW5jaGFyKCkpO2Zvcig7Yz40NyYmYzw1ODtjPWluY2hhcigpKXg9KHg8PDMpKyh4PDwxKSsoYyYxNSk7aWYobmVnKXg9LXg7fQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIG91dHBvcyhUIG4pe2lmKG48MCl7b3V0Y2hhcignLScpO24qPS0xO31jaGFyIHNudW1bNjVdO2ludCBpPTA7ZG8ge3NudW1baSsrXT1uJTEwKycwJztuLz0xMDt9d2hpbGUobik7aT1pLTE7d2hpbGUoaT49MClvdXRjaGFyKHNudW1baS0tXSk7b3V0Y2hhcignXG4nKTt9CiAKaW50IGlucFtNQVhdOwp2ZWN0b3I8IHBhaXI8aW50LGludD4gPiBudW1zOwp2ZWN0b3I8aW50PiBzZWdbTElNXTsKIAp2b2lkIGJ1aWxkX21lcmdlX3NvcnQoaW50IHQsIGludCBpLCBpbnQgaikgewoJaWYgKGk9PWopIHsKCQlzZWdbdF0ucHVzaF9iYWNrKG51bXNbaV0uc2Vjb25kKTsKCQlyZXR1cm4gOwoJfQoJaW50IGxlZnQgPSB0PDwxLCByaWdodCA9IGxlZnR8MSwgbWlkID0gKGkraikvMjsKCWJ1aWxkX21lcmdlX3NvcnQobGVmdCwgaSwgbWlkKTsKCWJ1aWxkX21lcmdlX3NvcnQocmlnaHQsIG1pZCsxLCBqKTsKCW1lcmdlKHNlZ1tsZWZ0XS5iZWdpbigpLCBzZWdbbGVmdF0uZW5kKCksIHNlZ1tyaWdodF0uYmVnaW4oKSwgc2VnW3JpZ2h0XS5lbmQoKSwgYmFja19pbnNlcnRlcihzZWdbdF0pKTsKfQogCmludCBxdWVyeV9rdGgoaW50IHQsIGludCBpLCBpbnQgaiwgaW50IGwsIGludCByLCBpbnQgaykgewoJaWYgKGkgPT0gaikgewoJCXJldHVybiBzZWdbdF1bMF07Cgl9CglpbnQgbGVmdCA9IHQ8PDEsIHJpZ2h0ID0gbGVmdHwxLCBtaWQgPSAoaStqKS8yLCB0b3RhbDsKCWF1dG8gaXQgPSB1cHBlcl9ib3VuZChzZWdbbGVmdF0uYmVnaW4oKSwgc2VnW2xlZnRdLmVuZCgpLCByKTsKCXRvdGFsID0gaXQgLSBsb3dlcl9ib3VuZChzZWdbbGVmdF0uYmVnaW4oKSwgc2VnW2xlZnRdLmVuZCgpLCBsKTsKCWlmICh0b3RhbCA+PSBrKSB7CgkJcmV0dXJuIHF1ZXJ5X2t0aChsZWZ0LCBpLCBtaWQsIGwsIHIsIGspOwoJfQoJZWxzZSB7CgkJcmV0dXJuIHF1ZXJ5X2t0aChyaWdodCwgbWlkKzEsIGosIGwsIHIsIGstdG90YWwpOwoJfQp9CiAKaW50IG1haW4oKSB7CglpbnQgbiwgbSwgeCwgeSwgaywgaWR4LCBhbnM7CglpbnBvcyhuKSwgaW5wb3MobSk7Cglmb3IoaW50IGk9MDsgaTxuOyArK2kpIHsKCQlpbnBvcyh4KTsKCQlpbnBbaV0gPSB4OwoJCW51bXMucHVzaF9iYWNrKG1ha2VfcGFpcih4LCBpKSk7Cgl9Cglzb3J0KG51bXMuYmVnaW4oKSwgbnVtcy5lbmQoKSk7CglidWlsZF9tZXJnZV9zb3J0KDEsIDAsIG4tMSk7Cgl3aGlsZSAobS0tKSB7CgkJaW5wb3MoeCksIGlucG9zKHkpLCBpbnBvcyhrKTsKCQktLXg7IC0teTsKCQlpZHggPSBxdWVyeV9rdGgoMSwgMCwgbi0xLCB4LCB5LCBrKTsKCQlhbnMgPSBpbnBbaWR4XTsKCQlvdXRwb3MoYW5zKTsKCX0KCXJldHVybiAwOwp9IA==