#include <cstdio>
#include <iostream>
#include <ctype.h>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
#include <vector>
#include <stack>
using namespace std;
int s[40];
stack<int> ans;
bool cmp1(int a,int b)
{
return a<b;
}
//priority_queue<int ,cmp1 > pq;
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",s+i);
sort(s+1,s+n+1);
int sum=0;
if(n==1)
printf("%d\n",s[1]);
else if(n==2)
printf("%d\n",max(s[1],s[2]));
else
if(n==3)
{
for(int i=1;i<=3;i++)
sum+=s[i];
printf("%d\n",sum);
}
else
{
sum+=((n+1)/2-1)*(s[1]+s[2]);
if(n&1)
{
sum+=s[n];
for(int i=n-1;i>2;i-=2)
{
sum+=s[i]+s[2];
}
}
else
{
for(int i=n;i>2;i-=2)
sum+=s[i]+s[2];
sum+=s[2];
}
}
printf("%d\n",sum);
}