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