#include<iostream>
#include<queue>
using namespace std;
priority_queue<int, vector<int>, greater<int> > p; //定义小根堆
int main(){
int n,i,x,y,s=0;
cin>>n;
//将赋值的数推入队列
for(i=1;i<=n;i++){
cin>>x;
p.push(x);
}
for(i=1;i<=n-1;i++){
x = p.top();
p.pop();
y = p.top();
p.pop();
p.push(x+y);
s = s + x+y;
}
cout<<s;
return 0;
}
/**************************************************************
Problem: 1752
User: admin
Language: C++
Result: Accepted
Time:22 ms
Memory:2212 kb
****************************************************************/