#include <stdio.h>
#include <memory.h>
#define MAX 20005
int num_fruit[10005] = {0};
int node[10005];
void quicksort(int *num, int len);
void swap(int *a, int *b);
int main()
{
int n = 0;
long ans = 0;
memset(node,MAX,sizeof(node));
scanf("%d",&n);
for(int i = 0; i < n; i++)
{
scanf("%d",&num_fruit[i]);
}
quicksort(num_fruit,n);
num_fruit[n] = MAX;
for(int i = 0, j = 0, k = 0; k < n - 1 ; )
{
int tmp = 0;
tmp = (node[j] < num_fruit[i]) ? node[j++] : num_fruit[i++];
tmp += (node[j] < num_fruit[i]) ? node[j++] : num_fruit[i++];
ans += tmp;
node[k++] = tmp;
}
printf("%ld",ans);
}
void quicksort(int *num, int len)
{
if (len <= 1)
return;
const int pivot = num[len >> 1];
int i = 0, j = 0, k = len;
while (i < k)
{
if (num[i] < pivot)
swap(&num[i++],&num[j++]);
else if (num[i] > pivot)
swap(&num[i],&num[--k]);
else
i++;
}
quicksort(num, j);
quicksort(num + k, len - k);
}
void swap(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}