#include <iostream>
#include <algorithm>
#include <queue>

using namespace std;


 

									//默认的小于关系 
priority_queue <int, vector<int> , greater<int>   > q;
int n , ans = 0; 

int main(){
	scanf("%d",&n);
	for (int i=1;i<=n;i++){
		int k;
		scanf("%d",&k);
		q.push(k);
	}

	for (int i=1;i<=n-1;i++){	//做n-1次合并
		int x = q.top() ; q.pop();
		int y = q.top() ; q.pop();	//取出最小的两堆果子
	
		q.push( x + y);
		ans += x+y; 
	}
	cout << ans;
}


//每次找到当前最小的两堆果子并且合并