#include<stdio.h>
#define maxsize 10000
int search(int a[], int m) {
int mini = 0, min = a[0];
for (int j = 1; j < m; j++) {
if (a[j] < min) {
min = a[j]; //记录最小值
mini = j;
}
}
a[mini] = a[m -
1]; //在原数组中,移除这个最小值(用最后一个元素来覆盖)
return min;
}
int main() {
int m;
int a[maxsize];
while (scanf("%d", &m) != EOF) {
int sum = 0, min1, min2;
for (int i = 0; i < m; i++)
scanf("%d", &a[i]);
while (m > 1) {
min1 = search(a, m); //最小值
m--; //在原数组中移除最小值。原数组中元素个数为m-1个
min2 = search(a, m); //次小值最后下标m
sum = min1 + min2 + sum; //累计
a[m - 1] =min1+min2; //最小值和次小值的和作为原数组中的一个元素 m个元素 m-1
}
printf("%d\n", sum);
}
return 0;
}