#本题思路是先算最小的2个和,局部最优解,再把和放进堆,再在接下来的数中再算最小的2个和...
n = int(input())
a = list(map(int, input().split()))
from heapq import heappop, heappush, heapify
heapify(a) #将a转换成一个最小堆
res = 0 #结果
while len(a) > 1: #当堆中元素大于一个时
min1 = heappop(a)
min2 = heappop(a)
t = min1 + min2 #取两次最小堆顶元素相加
res += t #在结果上累加
heappush(a, t) #再把t放进堆中
print(res)