#include<iostream>
#include<vector>
#include<queue>
using namespace std;
int main() {
int n; // 水果种类数
while (cin >> n) {
if (n == 0) {
break; // 输入为0时结束循环
}
priority_queue<int, vector<int>, greater<int>> myQueue; // 创建一个小顶堆优先队列
for (int i = 0; i < n; i++) {
int temp;
cin >> temp;
myQueue.push(temp); // 将每种水果的数目插入优先队列
}
int ans = 0; // 存储最终的答案,即总的体力耗费值
while (myQueue.size() > 1) { // 当队列中还有两种及以上的水果时
int a = myQueue.top(); // 弹出队列中数目最少的水果
myQueue.pop();
int b = myQueue.top(); // 弹出队列中数目次少的水果
myQueue.pop();
ans += (a + b); // 将两种水果的数目之和累加到答案中,表示合并的体力耗费
myQueue.push(a + b); // 将新的水果(数目为原两种水果之和)插入队列
}
cout << ans << endl; // 输出最终的体力耗费值
}
return 0;
}