#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int main()
{
priority_queue<int, vector<int>, greater<int> > a;
int n, temp;
cin >> n;
int i;
for (i = 0; i < n; i++)
{
cin >> temp;
a.push(temp);
}
int sum = 0;
while (!a.empty())
{
int x = a.top(); //取队列头元素,这与栈不同,栈(stack)是取栈顶元素
a.pop(); //弹出队列头元素
if (a.empty())
break;
int y = a.top();
a.pop();
x += y;
sum += x;
a.push(x);
}
cout << sum;
return 0;
}