#include<bits/stdc++.h>
using namespace std;
typedef long long int lli;
typedef pair<int,int> pii;
typedef vector<int> vec;
#define pb push_back
#define mp make_pair
#define mt make_tuple
#define scn(n) scanf("%d",&n)
#define scnll(n) scanf("%lld",&n)
#define scn2(n,m) scanf("%d%d",&n,&m)
#define scn2ll(n,m) scanf("%lld%lld",&n,&m)
#define atoz(v) v.begin(),v.end()
#define fill(a,v) memset(a,v,sizeof(a))
#define sz(v) v.size()
#define fi first
#define se second
#define inf 1e9
#define pi acos(-1.0)
#define sqr(x) x*x
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))
#define N 100005
vector<int>tree[5*N];
int a[N],n,q;
lli mx=-1e11;
lli mn=1e11;
map<int,int>idx;
/** http://w...content-available-to-author-only...j.com/problems/MKTHNUM/ **/
/** see merge sort tree from codechef**/
void build_tree( int cur, int l, int r )
{
if( l==r )
{
tree[cur].pb( a[l] );
return ;
}
int mid = (r+l)/2;
int left = 2*cur;
int right = 2*cur+1;
build_tree(left, l, mid ); // Build left tree
build_tree(right, mid+1, r ); // Build right tree
int i=0,j=0;
int md=tree[left].size();
int hi=tree[right].size();
/**merging two sorted vector**/
for(int kk=0 ; kk<hi+md ; kk++)
{
if(i==md)tree[cur].pb(tree[right][j++]);
else if(j==hi)tree[cur].pb(tree[left][i++]);
else if(tree[left][i]<tree[right][j])tree[cur].pb(tree[left][i++]);
else tree[cur].pb(tree[right][j++]);
}
}
int query( int cur, int l, int r, int x, int y, int k)
{
if( r < x || l > y )
{
return 0; //out of range
}
if( x<=l && r<=y )
{
//Binary search over the current sorted vector to find elements smaller than K
mx = max(mx,(lli)tree[cur][tree[cur].size()-1]);
mn = min(mn,(lli)tree[cur][0]);
return upper_bound(atoz(tree[cur]),k)-tree[cur].begin();
}
int mid=(r+l)/2;
return query(2*cur,l,mid,x,y,k)+query(2*cur+1,mid+1,r,x,y,k);
}
int main()
{
scn2(n,q);
for(int i=1 ; i<=n; i++){
scn(a[i]);
idx[a[i]]=i;
}
build_tree(1,1,n);
while(q--)
{
int lo,hi,k;
scn2(lo,hi);
scn(k); /** kth smallest element in this range*/
// printf("oka-> %d\n",query(1,1,n,lo,hi,k));
int temp = query(1,1,n,lo,hi,k);
int l=(int)mn,h=(int)mx;
int mid;
while(l<=h){
mid = (l+h)/2;
temp = query(1,1,n,lo,hi,mid);
if(temp == k && (idx[mid]>=lo && idx[mid]<=hi)){
printf("%d\n",mid);
break;
}
else if(temp<k)l=mid+1;
else h=mid-1;
}
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIGludCBsbGk7CnR5cGVkZWYgcGFpcjxpbnQsaW50PiBwaWk7CnR5cGVkZWYgdmVjdG9yPGludD4gdmVjOwoKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBtcCBtYWtlX3BhaXIKI2RlZmluZSBtdCBtYWtlX3R1cGxlCiNkZWZpbmUgc2NuKG4pIHNjYW5mKCIlZCIsJm4pCiNkZWZpbmUgc2NubGwobikgc2NhbmYoIiVsbGQiLCZuKQojZGVmaW5lIHNjbjIobixtKSBzY2FuZigiJWQlZCIsJm4sJm0pCiNkZWZpbmUgc2NuMmxsKG4sbSkgc2NhbmYoIiVsbGQlbGxkIiwmbiwmbSkKI2RlZmluZSBhdG96KHYpIHYuYmVnaW4oKSx2LmVuZCgpCiNkZWZpbmUgZmlsbChhLHYpIG1lbXNldChhLHYsc2l6ZW9mKGEpKQojZGVmaW5lIHN6KHYpIHYuc2l6ZSgpCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBpbmYgMWU5CiNkZWZpbmUgcGkgYWNvcygtMS4wKQojZGVmaW5lIHNxcih4KSB4KngKI2RlZmluZSBtYXgzKGEsYixjKSBtYXgoYSxtYXgoYixjKSkKI2RlZmluZSBtaW4zKGEsYixjKSBtaW4oYSxtaW4oYixjKSkKI2RlZmluZSBOIDEwMDAwNQoKdmVjdG9yPGludD50cmVlWzUqTl07CmludCBhW05dLG4scTsKCmxsaSBteD0tMWUxMTsKbGxpIG1uPTFlMTE7Cm1hcDxpbnQsaW50PmlkeDsKCi8qKiBodHRwOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uai5jb20vcHJvYmxlbXMvTUtUSE5VTS8gKiovCi8qKiBzZWUgbWVyZ2Ugc29ydCB0cmVlIGZyb20gY29kZWNoZWYqKi8KCnZvaWQgYnVpbGRfdHJlZSggaW50IGN1ciwgaW50IGwsIGludCByICkKewogICAgaWYoIGw9PXIgKQogICAgewogICAgICAgIHRyZWVbY3VyXS5wYiggYVtsXSApOwogICAgICAgIHJldHVybiA7CiAgICB9CgogICAgaW50IG1pZCA9IChyK2wpLzI7CiAgICBpbnQgbGVmdCA9IDIqY3VyOwogICAgaW50IHJpZ2h0ID0gIDIqY3VyKzE7CgogICAgYnVpbGRfdHJlZShsZWZ0LCBsLCBtaWQgKTsgIC8vIEJ1aWxkIGxlZnQgdHJlZQogICAgYnVpbGRfdHJlZShyaWdodCwgbWlkKzEsIHIgKTsgICAvLyBCdWlsZCByaWdodCB0cmVlCgogICAgaW50IGk9MCxqPTA7CiAgICBpbnQgbWQ9dHJlZVtsZWZ0XS5zaXplKCk7CiAgICBpbnQgaGk9dHJlZVtyaWdodF0uc2l6ZSgpOwoKICAgIC8qKm1lcmdpbmcgdHdvIHNvcnRlZCB2ZWN0b3IqKi8KCiAgICBmb3IoaW50IGtrPTAgOyBrazxoaSttZCA7IGtrKyspCiAgICB7CiAgICAgICAgaWYoaT09bWQpdHJlZVtjdXJdLnBiKHRyZWVbcmlnaHRdW2orK10pOwoKICAgICAgICBlbHNlIGlmKGo9PWhpKXRyZWVbY3VyXS5wYih0cmVlW2xlZnRdW2krK10pOwoKICAgICAgICBlbHNlIGlmKHRyZWVbbGVmdF1baV08dHJlZVtyaWdodF1bal0pdHJlZVtjdXJdLnBiKHRyZWVbbGVmdF1baSsrXSk7CgogICAgICAgIGVsc2UgdHJlZVtjdXJdLnBiKHRyZWVbcmlnaHRdW2orK10pOwogICAgfQp9CgppbnQgcXVlcnkoIGludCBjdXIsIGludCBsLCBpbnQgciwgaW50IHgsIGludCB5LCBpbnQgaykKewogICAgaWYoIHIgPCB4IHx8IGwgPiB5ICkKICAgIHsKICAgICAgICByZXR1cm4gMDsgLy9vdXQgb2YgcmFuZ2UKICAgIH0KICAgIGlmKCB4PD1sICYmIHI8PXkgKQogICAgewogICAgICAgIC8vQmluYXJ5IHNlYXJjaCBvdmVyIHRoZSBjdXJyZW50IHNvcnRlZCB2ZWN0b3IgdG8gZmluZCBlbGVtZW50cyBzbWFsbGVyIHRoYW4gSwogICAgICAgIG14ID0gbWF4KG14LChsbGkpdHJlZVtjdXJdW3RyZWVbY3VyXS5zaXplKCktMV0pOwogICAgICAgIG1uID0gbWluKG1uLChsbGkpdHJlZVtjdXJdWzBdKTsKCiAgICAgICAgcmV0dXJuIHVwcGVyX2JvdW5kKGF0b3oodHJlZVtjdXJdKSxrKS10cmVlW2N1cl0uYmVnaW4oKTsKICAgIH0KCiAgICBpbnQgbWlkPShyK2wpLzI7CgogICAgcmV0dXJuIHF1ZXJ5KDIqY3VyLGwsbWlkLHgseSxrKStxdWVyeSgyKmN1cisxLG1pZCsxLHIseCx5LGspOwp9CgppbnQgbWFpbigpCnsKICAgIHNjbjIobixxKTsKCgogICAgZm9yKGludCBpPTEgOyBpPD1uOyBpKyspewogICAgICAgIHNjbihhW2ldKTsKICAgICAgICBpZHhbYVtpXV09aTsKICAgIH0KCgogICAgYnVpbGRfdHJlZSgxLDEsbik7CgogICAgd2hpbGUocS0tKQogICAgewoKICAgICAgICBpbnQgbG8saGksazsKICAgICAgICBzY24yKGxvLGhpKTsKICAgICAgICBzY24oayk7ICAgICAgICAgLyoqIGt0aCBzbWFsbGVzdCBlbGVtZW50IGluIHRoaXMgcmFuZ2UqLwoKICAgICAgIC8vIHByaW50Zigib2thLT4gJWRcbiIscXVlcnkoMSwxLG4sbG8saGksaykpOwogICAgICAgIGludCB0ZW1wID0gcXVlcnkoMSwxLG4sbG8saGksayk7CiAgICAgICAgaW50IGw9KGludCltbixoPShpbnQpbXg7CiAgICAgICAgaW50IG1pZDsKCiAgICAgICAgIHdoaWxlKGw8PWgpewoKICAgICAgICAgICAgIG1pZCA9IChsK2gpLzI7CgogICAgICAgICAgICAgdGVtcCA9IHF1ZXJ5KDEsMSxuLGxvLGhpLG1pZCk7CgogICAgICAgICAgICAgaWYodGVtcCA9PSBrICYmIChpZHhbbWlkXT49bG8gJiYgaWR4W21pZF08PWhpKSl7CiAgICAgICAgICAgICAgICBwcmludGYoIiVkXG4iLG1pZCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYodGVtcDxrKWw9bWlkKzE7CiAgICAgICAgICAgICBlbHNlIGg9bWlkLTE7CiAgICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMDsKfQoK