import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.PriorityQueue;
import java.util.Scanner;
import javax.swing.table.TableColumn;
public class Main{
public static void main(String[] args) throws Exception{
StreamTokenizer cin = new StreamTokenizer(new BufferedInputStream(System.in));
PrintWriter cout = new PrintWriter(System.out) ;
new Task().solve(cin , cout) ;
cout.flush() ;
}
}
class Task{
public void solve(StreamTokenizer cin , PrintWriter cout) throws IOException{
cin.nextToken() ;
int n = (int)cin.nval ;
PriorityQueue<Integer> que = new PriorityQueue<Integer>() ;
for(int i = 0 ; i < n ; i++){
cin.nextToken() ;
que.add((int)cin.nval ) ;
}
long sum = 0 ;
while(que.size() > 1){
int a = que.poll() ;
int b = que.poll() ;
sum += a + b ;
que.add(a+b) ;
}
cout.println(sum) ;
//cout.flush() ;
}
}