var n,i,min,t,temp,k:longint;
a:array[1..10000] of longint;
begin
readln(n);
for i:=1 to n do
readln(a[i]);
while i>1 do
if a[i shr 1]>a[i] then
begin
t:=a[i shr 1];
a[i shr 1]:=a[i];
a[i]:=t;
i:=i shr 1;
end
else
break;
i:=1;
while n>1 do
begin
k:=2*i+1;
if k<=n then
begin
if a[2*i]<a[2*i+1] then begin
a[2*i]:=a[2*i]+a[1];a[1]:=a[n];a[n]:=maxlongint;
min:=min+a[2*i];
n:=n-1;
end
else begin
a[2*i+1]:=a[2*i+1]+a[1];a[1]:=a[n];a[n]:=maxlongint;
min:=min+a[2*i+1];
n:=n-1;
end;
end
else begin min:=min+a[1]+a[2];n:=0;end;
i:=1;
while 2*i<=n do
begin
temp:=i;
if a[2*i]<a[temp] then temp:=2*i;
if a[2*i+1]<a[temp] then temp:=2*i+1;
if temp=i then break;
t:=a[temp];a[temp]:=a[i];a[i]:=t;
i:=temp;
end;
end;
writeln(min);
end.
a:array[1..10000] of longint;
begin
readln(n);
for i:=1 to n do
readln(a[i]);
while i>1 do
if a[i shr 1]>a[i] then
begin
t:=a[i shr 1];
a[i shr 1]:=a[i];
a[i]:=t;
i:=i shr 1;
end
else
break;
i:=1;
while n>1 do
begin
k:=2*i+1;
if k<=n then
begin
if a[2*i]<a[2*i+1] then begin
a[2*i]:=a[2*i]+a[1];a[1]:=a[n];a[n]:=maxlongint;
min:=min+a[2*i];
n:=n-1;
end
else begin
a[2*i+1]:=a[2*i+1]+a[1];a[1]:=a[n];a[n]:=maxlongint;
min:=min+a[2*i+1];
n:=n-1;
end;
end
else begin min:=min+a[1]+a[2];n:=0;end;
i:=1;
while 2*i<=n do
begin
temp:=i;
if a[2*i]<a[temp] then temp:=2*i;
if a[2*i+1]<a[temp] then temp:=2*i+1;
if temp=i then break;
t:=a[temp];a[temp]:=a[i];a[i]:=t;
i:=temp;
end;
end;
writeln(min);
end.