#include<iostream>
#include<queue>
using namespace std;
struct cmp1{
bool operator ()(long long &a,long long &b){
return a>b;//最小值优先
}
};
priority_queue<long long,vector<long long>,cmp1>pq;
int main(){
long long n;
while(cin>>n){
long long a;
long long ans=0;
long long tempans=0;
for(long long i=0;i<n;i++){
cin>>a;
pq.push(a);
}
while(pq.size()!=1){
tempans+=pq.top();
pq.pop();
tempans+=pq.top();
pq.pop();
pq.push(tempans);
ans+=tempans;
tempans=0;
}
cout<<ans<<endl;
}
}