#include <bits/stdc++.h>
using namespace std;
int n, ans, s[1000007], f[1000007];
int Time(int n){
if(n == 1) return s[1];
else if(n == 2) return s[2];
else if(n == 3) return s[1] + s[2] + s[3];
else{
int T1 = s[n] + s[n-1] + 2 * s[1];
int T2 = 2 * s[2] + s[1] + s[n];
ans += min(T1, T2) + Time(n - 2);
}
}
int main(){
// 当n=1,2,3时,答案显而易见
// 当n=4时,有两种策略 :
// 1 :最快的依次送所有人
// 2 :最快的和次快的先过河,最快的回来,两个最慢的过河,次快的把船开回来
// 当 n != 4时, 则每次送走最慢的两个, 使用当前最优方案,直到 n < 4
scanf("%d", &n);
for(int i=1;i<=n;i++) scanf("%d", &s[i]);
sort(s+1,s+n+1);
Time(n);
printf("%d\n", ans);
return 0;
}