var min:int64;
i,j,k,n:longint;
a:array[0..10010]of int64;
b:array[0..10010]of int64;
procedure sort(l,r:longint);
var i,j,x:longint;
t:int64;
begin
i:=l;j:=r;
x:=a[(l+r) shr 1];
repeat
while a[i]<x do inc(i);
while a[j]>x do dec(j);
if i<=j then
begin
t:=a[i];a[i]:=a[j];a[j]:=t;inc(i);dec(j);
end;
until i>j;
if i<r then sort(i,r);
if j>l then sort(l,j);
end;
procedure make;
var g:longint;
p,q:int64;
begin
i:=1;
j:=1;
k:=1;
for g:=1 to n-1 do
begin
if a[i]<b[j] then begin p:=a[i];inc(i);end
else begin p:=b[j];inc(j);end;
if a[i]<b[j] then begin q:=a[i];inc(i);end
else begin q:=b[j];inc(j);end;
b[k]:=q+p;inc(k);
min:=min+b[k-1];
end;
end;
begin
min:=0;
readln(n);
for i:=1 to n do
begin
read(a[i]);
b[i]:=maxlongint;
end;
sort(1,n);
make;
writeln(min);
readln;
readln;
end.
过前3个点,剩下的都比正确答案小