rec=record
x,num:byte;
l,r:integer;
end;
arr=array[1..10000]of rec;
var
i,j,top:integer;
p,n:byte;
a:arr;
procedure serch(q,t:byte);{二叉树构建}
var
i,j:integer;
begin
if a[t].x=0 then
begin
a[t].x:=q;
inc(a[t].num);
end
else
begin
if a[t].x=q then inc(a[t].num);
if (a[t].x) > q then
if a[t].l=0 then
begin
inc(top);
a[t].l:=top;
serch(q,a[t].l);
end
else
serch(q,a[t].l);
if (a[t].x)<q then
if a[t].r=0 then
begin
inc(top);
a[t].r:=top;
serch(q,a[t].r);
end
else
serch(q,a[t].r);
end;
end;
procedure print(i:integer);{输出}
begin
if a[i].l<>0 then print(a[i].l);
write(a[i].x);
write(' ');
writeln(a[i].num);
if a[i].r<>0 then print(a[i].r);
end;
begin
read(n);
for i:=1 to n do
begin
a[i].x:=0;
a[i].num:=0;
a[i].l:=0;
a[i].r:=0;
end;
top:=1;
for i:=1 to n do
begin
read(p);
serch(p,1);
end;
print(1);
end.