#include <algorithm>
#include <queue>
#include <iostream>
#define fo(i,j,n,k) for(int (i)=(j);(i)<=(n);(i)+=(k))
using namespace std;
const int upint=1e6+10;
const double downdouble=1e-6;
priority_queue<long long,vector<long long >,greater<long long> >q;
typedef long long ll;
typedef double dp;
ll n,a,cnt=0;
int main(){
scanf("%lld",&n);
fo(i,1,n,1){
scanf("%lld",&a);
q.push(a);
}
while(q.size()>=2){
ll a=q.top();
q.pop();
ll b=q.top();
q.pop();
cnt+=a+b;
q.push(a+b);
}
printf("%lld",cnt);
return 0;
}