const inf=maxlongint shr1;
type ti=array[0..1000]of longint;
var n,i:longint;
a:ti;
functionsort(a:ti;l,r:longint):longint;
var b,c:ti;
functionMERGE_SORT(l,r:longint):longint;
var mid,i,t1,t2,t:longint;
begin
MERGE_SORT:=0;
if l<>r thenbegin
mid:=(l+r) shr1;
MERGE_SORT(l,mid);
MERGE_SORT(mid+1,r);
for i:=1to mid-l+1do b[i]:=a[l+i-1];
for i:=1to r-mid do c[i]:=a[mid+i];
b[mid-l+2]:=inf;
c[r-mid+1]:=inf;
i:=l;
t1:=1;
t2:=1;
t:=0;
while i<=r dobeginif b[t1]<=c[t2] thenbegin
a[i]:=b[t1];
inc(t1);
endelsebegin
a[i]:=c[t2];
inc(t2);
inc(t,mid-t1+1);
end;
inc(i);
end;
end;
inc(MERGE_SORT,t);
end;
beginexit(MERGE_SORT(l,r));
end;
begin
readln(n);
for i:=1to n doread(a[i]);
sort(a,1,n);
for i:=1to n dowrite(a[i],' ');
readln;
readln
end.