# -*- coding: utf-8 -*-

# モジュールのインポート

import math

import numpy as np



# 標準入力を取得

N = int(eval(input()))

A = list(map(int, input().split()))



# 求解処理

A = sorted(A, reverse=True)

A = np.array(A)

ans = 2 * np.sum(A[:(N // 2)]) - A[0] + (N % 2) * A[math.floor(N / 2)]



# 結果出力

print(ans)

# -*- coding: utf-8 -*-

# モジュールのインポート

import math



# 標準入力を取得

N = int(eval(input()))

A = list(map(int, input().split()))



# 求解処理

A = sorted(A, reverse=True)

ans = 0

for n in range(1, N + 1):

    if n == 1:

        continue

    ans += A[math.ceil(n / 2) - 1]



# 結果出力

print(ans)

# -*- coding: utf-8 -*-
# モジュールのインポート
import math
import numpy as np

# 標準入力を取得
N = int(eval(input()))
A = list(map(int, input().split()))
# 求解処理
A = sorted(A, reverse=True)
A = np.array(A)
ans = 2 * np.sum(A[: (N // 2)]) - A[0] + (N % 2) * A[math.floor(N / 2)]
# 結果出力
print(ans)

# -*- coding: utf-8 -*-
# モジュールのインポート
import math

# 標準入力を取得
N = int(eval(input()))
A = list(map(int, input().split()))
# 求解処理
A = sorted(A, reverse=True)
ans = 0
for n in range(1, N + 1):
    if n == 1:
        continue
    ans += A[math.ceil(n / 2) - 1]
# 結果出力
print(ans)

-import numpy as np -A = np.array(A) -ans = 2 * np.sum(A[: (N // 2)]) - A[0] + (N % 2) * A[math.floor(N / 2)] +ans = 0 +for n in range(1, N + 1): +    if n == 1: +        continue +    ans += A[math.ceil(n / 2) - 1]