#include <iostream>
#include <algorithm>
using namespace std;
const int N(30009);
int w[N]={0};
void adjust(int i,int b)
{
int j=i*2;
while(j<=b)
{
if(j<b&&w[j]>w[j+1])
j++;
if(w[i]>w[j])
{
swap(w[i],w[j]);
i=j;
j*=2;
}
else
break;
}
}
int main()
{
int n,ans(0);
cin>>n;
for(int i=1;i<=n;i++)
cin>>w[i];
for(int i=n/2;i>=1;i--) adjust(i,n);
for(int i=n;i>1;i--)
{
adjust(1,i);
swap(w[1],w[i]);
adjust(1,i-1);
w[1]+=w[i];
ans+=w[1];
}
cout<<ans<<endl;
return 0;
}
/**************************************************************
Problem: 2249
User: admin
Language: C++
Result: Accepted
Time:67 ms
Memory:2192 kb
****************************************************************/