function check(x1,y1,x2,y2:longint):boolean;
begin
if (trunc(x1/sqrt(n))>trunc(y1/sqrt(n)))or(trunc(x1/sqrt(n))=trunc(y1/sqrt(n)))and(x2>y2) then
exit(true)
else
exit(false);
end;
procedure sort(ll,rr:longint);
var i,j,x,y,z:longint;
begin
i:=ll;
j:=rr;
x:=l[(ll+rr) div 2];
z:=r[(ll+rr) div 2];
repeat
while check(l[i],x,r[i],z) do
inc(i);
while check(x,l[j],z,r[j]) do
dec(j);
if not(i>j) then
begin
y:=l[i];
l[i]:=l[j];
l[j]:=y;
y:=r[i];
r[i]:=r[j];
r[j]:=y;
y:=num[i];
num[i]:=num[j];
num[j]:=y;
inc(i);
dec(j);
end;
until i>j;
if ll<j then
sort(ll,j);
if i<rr then
sort(i,rr);
end;