import sys

read = sys.stdin.buffer.read

readline = sys.stdin.buffer.readline

readlines = sys.stdin.buffer.readlines



# 価値 x 以上の握手を全て行うとする

# 握手回数が決まる。左手ごとに集計できる。



import numpy as np



N,M = list(map(int,readline().split()))

A = np.array(read().split(),np.int64)



A.sort()



def shake_cnt(x):

    # x 以上の握手を全て行うとして、握手の回数を数える

    # 行わない握手を数える

    X = np.searchsorted(A,x-A)

    return N * N - X.sum()



left = 0 # 握手の回数がM以上

right = 10 ** 6 # 握手の回数がM未満

while left + 1 < right:

    x = (left + right) // 2

    if shake_cnt(x) >= M:

        left = x

    else:

        right = x



left,right



# right 以上の握手を全て行ったとして、回数と総和を計算



X = np.searchsorted(A,right-A) # 行わない人数

Acum = np.zeros(N+1,np.int64) # 人数 -> 累積和

Acum[1:] = np.cumsum(A)



shake = N * N - X.sum()

happy = (Acum[-1] - Acum[X]).sum() + (A * (N - X)).sum()



happy += (M - shake) *left

print(happy)
import sys

read = sys.stdin.buffer.read

readline = sys.stdin.buffer.readline

readlines = sys.stdin.buffer.readlines



import numpy as np



N,M = list(map(int,readline().split()))

A = np.array(read().split(),np.int64)



f = np.bincount(A)



fft_len = 1<<18

fft = np.fft.rfft; ifft = np.fft.irfft

Ff = fft(f,fft_len)

G = np.rint(ifft(Ff * Ff,fft_len)).astype(np.int64) # 和 -> 何通りか



Gcum = G.cumsum()

remove_cnt = N * N - M

i = np.searchsorted(Gcum,remove_cnt)



# i未満は全部除外。ちょうどiのものもいくつか除外

x = remove_cnt - Gcum[i-1]

remove_sum = (G[:i] * np.arange(i,dtype=np.int64)).sum() + i * x



answer = A.sum() * 2 * N - remove_sum

print(answer)
import sys

read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
# 価値 x 以上の握手を全て行うとする
# 握手回数が決まる。左手ごとに集計できる。
import numpy as np

N, M = list(map(int, readline().split()))
A = np.array(read().split(), np.int64)
A.sort()


def shake_cnt(x):
    # x 以上の握手を全て行うとして、握手の回数を数える
    # 行わない握手を数える
    X = np.searchsorted(A, x - A)
    return N * N - X.sum()


left = 0  # 握手の回数がM以上
right = 10**6  # 握手の回数がM未満
while left + 1 < right:
    x = (left + right) // 2
    if shake_cnt(x) >= M:
        left = x
    else:
        right = x
left, right
# right 以上の握手を全て行ったとして、回数と総和を計算
X = np.searchsorted(A, right - A)  # 行わない人数
Acum = np.zeros(N + 1, np.int64)  # 人数 -> 累積和
Acum[1:] = np.cumsum(A)
shake = N * N - X.sum()
happy = (Acum[-1] - Acum[X]).sum() + (A * (N - X)).sum()
happy += (M - shake) * left
print(happy)

import sys

read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
import numpy as np

N, M = list(map(int, readline().split()))
A = np.array(read().split(), np.int64)
f = np.bincount(A)
fft_len = 1 << 18
fft = np.fft.rfft
ifft = np.fft.irfft
Ff = fft(f, fft_len)
G = np.rint(ifft(Ff * Ff, fft_len)).astype(np.int64)  # 和 -> 何通りか
Gcum = G.cumsum()
remove_cnt = N * N - M
i = np.searchsorted(Gcum, remove_cnt)
# i未満は全部除外。ちょうどiのものもいくつか除外
x = remove_cnt - Gcum[i - 1]
remove_sum = (G[:i] * np.arange(i, dtype=np.int64)).sum() + i * x
answer = A.sum() * 2 * N - remove_sum
print(answer)

-# 価値 x 以上の握手を全て行うとする -# 握手回数が決まる。左手ごとに集計できる。 -A.sort() - - -def shake_cnt(x): -    # x 以上の握手を全て行うとして、握手の回数を数える -    # 行わない握手を数える -    X = np.searchsorted(A, x - A) -    return N * N - X.sum() - - -left = 0  # 握手の回数がM以上 -right = 10**6  # 握手の回数がM未満 -while left + 1 < right: -    x = (left + right) // 2 -    if shake_cnt(x) >= M: -        left = x -    else: -        right = x -left, right -# right 以上の握手を全て行ったとして、回数と総和を計算 -X = np.searchsorted(A, right - A)  # 行わない人数 -Acum = np.zeros(N + 1, np.int64)  # 人数 -> 累積和 -Acum[1:] = np.cumsum(A) -shake = N * N - X.sum() -happy = (Acum[-1] - Acum[X]).sum() + (A * (N - X)).sum() -happy += (M - shake) * left -print(happy) +f = np.bincount(A) +fft_len = 1 << 18 +fft = np.fft.rfft +ifft = np.fft.irfft +Ff = fft(f, fft_len) +G = np.rint(ifft(Ff * Ff, fft_len)).astype(np.int64)  # 和 -> 何通りか +Gcum = G.cumsum() +remove_cnt = N * N - M +i = np.searchsorted(Gcum, remove_cnt) +# i未満は全部除外。ちょうどiのものもいくつか除外 +x = remove_cnt - Gcum[i - 1] +remove_sum = (G[:i] * np.arange(i, dtype=np.int64)).sum() + i * x +answer = A.sum() * 2 * N - remove_sum +print(answer)