https://www.acmicpc.net/problem/1715
import heapq
#1 기존 배열을 만들고, heap 정렬을 해주는 방식
input = sys.stdin.readline
N = int(input())
card = [int(input()) for _ in range(N)]
heapq.heapify(card)
#2 애초에 값을 heappush로 받아 Minheap을 만드는 방식
input = sys.stdin.readline
N = int(input())
card = []
for _ in range(N):
heapq.heappush(card, int(input())
c = 0 # 이번 분기 비교한 카드의 비교 횟수
s = 0 # 총 카드 비교 횟수
while len(card) > 1:
n1 = heapq.heappop(card)
n2 = heapq.heappop(card)
c = n1 + n2
s += c
heapq.heappush(card, c)
# 새로 만들어진 카드뭉치가 현재 배열에서 작은지 큰지 모르니, heappush를 이용하여 heap에 저장
#전체코드#
import heapq
import sys
input = sys.stdin.readline
N = int(input())
card = [int(input()) for _ in range(N)]
heapq.heapify(card)
c = 0
s = 0
while len(card) > 1:
n1 = heapq.heappop(card)
n2 = heapq.heappop(card)
c = n1 + n2
s += c
heapq.heappush(card, c)
print(s)