#include//使用小根堆的库函数
#include
#include
#include
#include
using namespace std;
int n,ans=0;
priority_queue,greater > q;//建立一个小根堆
int main()
{
int i,x,y,m;
scanf("%d",&n);
for (i=1;i<=n;i++)
{
scanf("%d",&m);
q.push(m);//把每个数按顺序入队
}
while (q.size()>1)
{
x=q.top();q.pop();
y=q.top();q.pop();//把队列里最小的两个记录后出队
ans+=x+y;//迭加最后的答案
q.push(x+y);//合并好的重新入队
}
printf("%d",ans);//输出结果
}