#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <stack>
#include <map>
#include <queue>
#include <cmath>
using namespace std;
//哈夫曼树问题
int main() {
int n;
priority_queue<int> que;
while (scanf("%d", &n) != EOF) {
if (n == 0) {
break;
}
for (int i = 0; i < n; i++) { //输入数据
int t;
scanf("%d", &t);
que.push(-t); //变成小根堆
}
int total = 0;
for (int i = 0; i < n - 1; i++) { //一共n-1次合并
int t1 = que.top();
que.pop();
int t2 = que.top();
que.pop();
total = total + t1 + t2; //消耗的体力
que.push(t1 + t2); //把新的放入队列中
}
printf("%d\n", -total);
}
}