#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include <string>#include <time.h>#include <cstdio>#include <math.h>#include <iomanip>#include <cstdlib>#include <limits.h>#include <string.h>#include <iostream>#include <fstream>#include <algorithm>using namespace std;#define LL long long#define MIN INT_MIN#define MAX INT_MAX#define PI acos(-1.0)#define FRE freopen("input.txt","r",stdin)#define FF freopen("output.txt","w",stdout)#define N 20005priority_queue<LL,vector<LL>,greater<LL> > pp;int main () { int n; while (scanf("%d",&n) != -1) { int i; while (!pp.empty()) pp.pop(); LL d; LL ans = 0; for (i = 0; i < n; i++) { scanf("%I64d",&d); pp.push(d); } while (pp.size() != 1) { LL a,b; a = pp.top(); pp.pop(); b = pp.top(); pp.pop(); ans += (a + b); pp.push(a + b); } if (n == 1) { printf("%I64d\n",d); continue; } printf("%I64d\n",ans); } return 0;}