n,m,i,j,ans,min,max,o:longint;
procedure find(x,y:longint);
var i,j,p,t,l:longint;
begin
i:=x;j:=y;l:=(x+y)shr 1;p:=k[l];
while i<j do
begin
while k[i]<p do inc(i);
while k[j]>p do dec(j);
if i<=j then
begin
t:=k[i];k[i]:=k[j];k[j]:=t;
if l=i then l:=j else if l=j then l:=i;
inc(i);dec(j);
end;
end;
if l=o then begin ans:=p; exit; end;
if l>o then begin find(x,l-1); exit; end;
if l<o then begin find(l+1,y); exit; end;
end;
begin
readln(n,m);
for i:=1 to n do
read(temp[i]);
for i:=1 to m do
begin
readln(min,max,o);
for j:=min to max do
k[j-min+1]:=temp[j];
find(1,max-min+1);
writeln(ans);
end;
end.
只有4、7、9过了,其余都是错误的答案。