using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;

    public class Program
    {
        public static void Main(string[] args)
        {
            new D().test();
        }
    }

    public class A
    {
        public void test()
        {
            // 普通の数値
            var yen = CommonRead.ReadInt();

            if (yen % 1000 == 0)
            {
                Console.WriteLine(0);
            }
            else
            {
                Console.WriteLine(1000 - yen % 1000);
            }

        }
    }

    public class B
    {
        public void test()
        {
            // 普通の数値
            var yen = CommonRead.ReadInt();

            var name = new List<string>();
            name.Add("AC");
            name.Add("WA");
            name.Add("TLE");
            name.Add("RE");

            var AC = new List<string>();
            //var WA = new List<string>();
            //var TLE = new List<string>();
            //var RE = new List<string>();

            // 繰り返し回数
            for (int count =0; count < yen; count++)
            {
                AC.Add(CommonRead.ReadStr());
            }

            foreach(string sn in name)
            {
                Console.WriteLine(sn + " x " + AC.Count(str => str == sn));
            }

        }
    }


    public class C
    {
        public void test()
        {
            // 普通の数値
            var hwk = CommonRead.ReadIntL();

            var row = new List<List<string>>();

            for (int count = 0; count < hwk[0]; count++)
            {
                row.Add(CommonRead.ReadStrL());
            }

            // 答えの.数
            var equal = hwk[2];

            Console.WriteLine(0);
            

        }
    }

    public class D
    {
        public void test()
        {
            // 普通の数値
            var n = CommonRead.ReadLong();
            var a = CommonRead.ReadLongL().OrderByDescending(x => x).ToList();
            /*
            //.GroupBy(x => x).Select(x => new { key = x.Key, count = x.Count() });

            // 繰り返し
            long exec = 0;
            bool zenkai = false;

            for (int i = 1; i<n; i++)
            {

                if (zenkai)
                {
                    exec += a[i - 2];
                }
                else
                {
                    exec += a[i - 1];
                }

                if (a[i] == a[i-1])
                {
                    zenkai = true;
                }

            // 答えの数
            Console.WriteLine(exec);
            }
            */
            long ans = 0;
            for (int i = 0; i < n - 1; ++i)
            {
                ans += a[(i + 1) / 2];
            }
            Console.WriteLine(ans);




        }
    }


    static class CommonRead
    {
        public static string ReadStr()
        {
            return Console.ReadLine();
        }
        public static string[] ReadStrA()
        {
            return ReadStr().Split(' ');
        }
        public static List<string> ReadStrL()
        {
            return ReadStrA().ToList();
        }
        public static int ReadInt()
        {
            return Convert.ToInt32(ReadStr());
        }
        public static int[] ReadIntA()
        {
            return ReadStrA().Select(s => Convert.ToInt32(s)).ToArray();
        }
        public static List<int> ReadIntL()
        {
            return ReadStrA().Select(s => Convert.ToInt32(s)).ToList();
        }
        public static long ReadLong()
        {
            return Convert.ToInt64(ReadStr());
        }
        public static long[] ReadLongA()
        {
            return ReadStrA().Select(s => Convert.ToInt64(s)).ToArray();
        }
        public static List<long> ReadLongL()
        {
            return ReadStrA().Select(s => Convert.ToInt64(s)).ToList();
        }

        public static decimal ReadDecimal()
        {
            return Convert.ToDecimal(ReadStr());
        }
        public static decimal[] ReadDecimalA()
        {
            return ReadStrA().Select(s => Convert.ToDecimal(s)).ToArray();
        }
        public static List<decimal> ReadDecimalL()
        {
            return ReadStrA().Select(s => Convert.ToDecimal(s)).ToList();
        }

        public static double ReadDouble()
        {
            return Convert.ToDouble(ReadStr());
        }
        public static double[] ReadDoubleA()
        {
            return ReadStrA().Select(s => Convert.ToDouble(s)).ToArray();
        }
        public static List<double> ReadDoubleL()
        {
            return ReadStrA().Select(s => Convert.ToDouble(s)).ToList();
        }

    }


Measured memory_bytes: 46316