#include<bits/stdc++.h>
#define int long long
#define F first
#define S second
#define P pair
#define FOR(i,a,b) for(int i=a;i<=b;i++)
#define V vector
#define RE return
#define ALL(a) a.begin(),a.end()
#define MP make_pair
#define PB push_back
#define PF push_front
#define FILL(a,b) memset(a,b,sizeof(a))
using namespace std;
int a[100005],s[100005],n,m; 
int check(int mid){
	int sum=0;
	FOR(i,1,n){
		sum=sum+n-(lower_bound(a+1,a+n+1,mid-a[i])-a)+1;
	}
	return sum;
}
signed main(){
	ios::sync_with_stdio(0);
    cin.tie(0);
	cin>>n>>m;
	FOR(i,1,n)cin>>a[i];
	sort(a+1,a+n+1);
	for(int i=n;i>=1;i--)s[i]=s[i+1]+a[i];
	int l=0,r=1000000000,mid,ans=-1;
	while(r>=l){
		mid=(l+r)>>1;
		if(check(mid)>=m){
			ans=mid;l=mid+1;
		}else r=mid-1;
	} 
	int sum=0;
	FOR(i,1,n){
		int t=lower_bound(a+1,a+n+1,ans-a[i])-a;
		sum=sum+a[i]*(n-t+1)+s[t];
	}
	cout<<sum-(check(ans)-m)*ans;
	return 0;
}


