program p1066;
var a:array[0..10002]of longint;
n,i,j,k,ans,tot:longint;
procedure swap(var x,y:longint);
var t:longint;
begin
t:=x;x:=y;y:=t;
end;
procedure siftup(x:longint);
var j:longint;
begin
inc(tot);
if tot=1 then a[tot]:=x
else begin
a[tot]:=x;
j:=tot;
while (j>1)and(a[j]<a[j div 2]) do
begin
swap(a[j],a[j div 2]);
j:=j div 2;
end;
end;
end;
procedure siftdown(x:longint);
var j,k:longint;
begin
j:=1;
k:=2*j;
while (k<=tot) do
begin
if (a[k]>a[k+1])and(k+1<=tot) then inc(k);
if x>a[k] then
begin
swap(a[j],a[k]);
j:=k;
k:=2*j;
end
else exit;
end;
end;
begin
readln(n);
fillchar(a,sizeof(a),0);
for i:=1 to n do
begin
read(j);
siftup(j);
end;
ans:=0;
for i:=1 to n-1 do
begin
inc(ans,a[1]);
swap(a[1],a[tot]);
dec(tot);
siftdown(a[1]);
inc(ans,a[1]);
a[1]:=a[1]+a[tot+1];
siftdown(a[1]);
end;
writeln(ans);
end.
/**************************************************************
Problem: 2249
User: admin
Language: Pascal
Result: Wrong Answer
****************************************************************/