//NiceDuck
#include "bits/stdc++.h"
typedef long long ll;
using namespace std;
#define FILE "dovuive"
#define foru(i,a,b) for(int i=(int)(a); i<=(int)(b); ++i)
#define ford(i,a,b) for(int i=(int)(a); i>=(int)(b); --i)
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);
#define pb push_back
#define fi first
#define se second
#define pii pair<int,int>
#define pil pair<int,ll>
#define pli pair<ll,int>
#define MOD 1000000007
#define el "\n"

const int MAX=1e5+5;
int n,k;
ll a[MAX],ans;
vector<pair<ll,ll>> v;

int main()
{
    fastio
    freopen(FILE ".inp","r",stdin);
    freopen(FILE ".out","w",stdout);
    
    cin>>n>>k;
    map<ll,ll> mp;
    foru(i,1,n)
    {
        cin>>a[i];
        mp[a[i]]++;
    }
    v.pb(make_pair(0LL,0LL));
    for(pair<ll,ll> p:mp) 
    {
        v.pb(p); 
    }
    ford(i,v.size()-1,1)
    {
        // cerr<<v[i].fi<<' '<<v[i].se<<el;
        ll dist=v[i].fi-v[i-1].fi;
        if(k>dist*v[i].se)
        {
            k-=dist*v[i].se;
            ans+=((v[i].fi+v[i-1].fi+1)*dist/2)*v[i].se;
            v[i-1].se+=v[i].se;
        }
        else 
        {
            ll tmp=k/v[i].se,du=k%v[i].se;
            // cerr<<tmp<<' '<<du<<el;
            ans+=(v[i].fi+v[i].fi-tmp+1)*(tmp)/2*v[i].se+((v[i].fi-tmp)*du);
            cout<<ans;
            return 0;
        }
        // cerr<<k<<el;
        // cerr<<ans<<el;
    }
    cout<<ans;
    
    return 0;
}
