var i,j,n,total,k:longint;//integer;
a,b,c:array[1..100] of integer;
procedure msort(l,r:longint);
var
i,j,mid,k:longint;
begin
if (l=r) then exit;
mid:=(l+r) shr 1;
msort(l,mid); //让左右子序列有序
msort(mid+1,r);
for i:=l to r do
c[i]:=b[i];
i:=l;j:=mid+1;
for k:=l to r do
begin
if (i<=mid) and ((c[i]<=c[j]) or (j>r)) then
begin
b[k]:=c[i];
inc(i);
end
else
begin
b[k]:=c[j];
inc(total,mid-i+1); //统计核心 当前右元素与所有未输出的左元素构成逆序对
inc(j);
end;
end;
end;
begin
{读入数据}
Total:=0;
readln(n);
for i := 1 to n do read(b[i]);
readln;
msort(1,n);
for i := 1 to n do write(b[i], ' ');
writeln;
// writeln(total);
end.