#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int n;
int a[10000010];
long long t;
inline int read()
{
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=x*10+ch-48;
ch=getchar();
}
return x*f;
}
int qm(int a,int b)
{
if(a<b)
return a;
return b;
}
void change(int x,int y,int z)
{
a[x]=a[y];
a[y]=a[z];
return;
}
void up(int p)
{
while(p>1)
{
if(a[p]<a[p/2])
{
change(a[p],a[p/2],a[p]);
p/=2;
}
else
return;
}
return;
}
int main()
{
n=read();
for(int i=1;i<=n;++i)
{
a[i]=read();
up(i);
}
int w1=0,w2=0;
while(n>1)
{
if(n==2)
{
t=t+a[1]+a[2];
a[1]=a[1]+a[2];
n--;
break;
}
else
{
w1=a[1];
w2=qm(a[2],a[3]);
a[1]=a[n];
if(a[2]<a[3])
a[2]=a[n-1];
else
a[3]=a[n-1];
t=t+w1+w2;
a[--n]=w1+w2;
for(int i=1;i<=n;++i)
up(i);
}
}
cout<<t;
return 0;
}