lt=array[0..1]of longint;
var
i,j,k,l,m,n,x,y,z:longint;
s:array[1..10000]of lt;
procedure qs(a,b:longint);
var l,r,k:longint;
t:lt;
begin
l:=a;r:=b;
k:=s[(a+b)div 2,1];
repeat
while s[l][1]<k do inc(l);
while s[r][1]>k do dec(r);
if l<=r then
begin
t:=s[l];s[l]:=s[r];s[r]:=t;
inc(l);dec(r);
end;
until l>r;
if r>a then qs(a,r);
if l<b then qs(l,b);
end;
function lf(a,b,c:longint):longint;
var i,j,k,l:longint;
begin
k:=c;
for i:=1 to n do
begin
if(s[i][0]>=a)and(s[i][0]<=b)then dec(k);
if k=0 then exit(s[i][1]);
end;
end;
begin
read(n,m);
for i:=1 to n do
begin
s[i][0]:=i;
read(s[i][1]);
end;
qs(1,n);
//for i:=1 to n do writeln(s[i][1],' ',s[i][0]);
for i:=1 to m do
begin
read(x,y,z);
if x>y then begin l:=x;x:=y;y:=l; end;
writeln(lf(x,y,z));
end;
end.
var a,tt:array[1..3000000]of longint;
n,k,i,m,l,r:longint;
function sort(l,r,k:longint):longint;
var i,j,x,y:longint;
begin
if l=r then exit(a[l]);
i:=l;j:=r;x:=a[(i+j) shr 1];
repeat
while a[i]<x do inc(i);while a[j]>x do dec(j);
if i<=j then
begin
y:=a[i];a[i]:=a[j];a[j]:=y;inc(i);dec(j);
end;
until i>j;
if(k>=i)then exit(sort(i,r,k));if(k<=j)then exit(sort(l,j,k));
exit(x);
end;
begin
readln(n,m);
for i:=1 to n do read(tt[i]);
for i:=1 to m do
begin
a:=tt;
readln(l,r,k);
writeln(sort(l,r,l+k-1));
end;
end.