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
****************************************************************/