#include<bits/stdc++.h>
using namespace std;
#define ll long long
int read(){
int x=0,o=1;char ch=getchar();
while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar();
if(ch=='-')o=-1,ch=getchar();
while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
return x*o;
}
const int N=1e5+5;
const int M=150005;
const int mod=1e9+7;
int n,a[N],b[N];
ll c[N];
ll pre[N],pre2[N];
bool check(ll mid,ll m){
for(int i=1;i<=n;++i)c[i]=a[i];
ll tot=pre2[n];
for(int i=1;i<=n;++i){
//if(b[i]<=c[i])break;
ll now_sum1=pre[i]+mid;
ll now_ave1=now_sum1/i;
if(now_ave1>c[i+1])continue;
if(now_ave1<c[i])break;
ll now_ret1=now_sum1%i;
for(int j=n;j>i;--j){
//if(c[j]<=b[j])break;
ll now_sum2=pre[n]-pre[j-1]-mid;
ll now_ave2=now_sum2/(n-j+1);
if(now_ave2<c[j-1])continue;
if(now_ave2>c[j])break;
ll now_ret2=now_sum2%(n-j+1);
ll now_ans=tot-pre2[i]+(1ll*now_ave1*now_ave1*(i-now_ret1))+(1ll*(now_ave1+1)*(now_ave1+1)*now_ret1)-(pre2[n]-pre2[j-1])+(1ll*now_ave2*now_ave2*(n-j+1-now_ret2))+(1ll*(now_ave2+1)*(now_ave2+1)*now_ret2);
if(now_ans<=m)return true;
}
}
return false;
}
int main() {
ll x;
cin>>n>>x;
ll m=1ll*n*x;
ll sum=0;
ll now=0;
for(int i=1;i<=n;++i){
a[i]=read();
sum+=a[i];
now+=1ll*a[i]*a[i];
}
if(now<=m){
cout<<"0"<<endl;
return 0;
}
int ave=sum/n;
int ret=sum%n;
ll minn=0;
for(int i=1;i<=ret;++i){
minn+=1ll*(ave+1)*(ave+1);
b[i]=ave+1;
}
for(int i=ret+1;i<=n;++i){
minn+=1ll*ave*ave;
b[i]=ave;
}
if(minn>m){
cout<<"-1"<<endl;
return 0;
}
sort(a+1,a+n+1);
sort(b+1,b+n+1);
for(int i=1;i<=n;++i){
pre[i]=pre[i-1]+a[i];
pre2[i]=pre2[i-1]+1ll*a[i]*a[i];
}
ll l=1,r=0;
for(int i=1;i<=n;++i){
if(a[i]<b[i])r+=(b[i]-a[i]);
}
ll ans;
while(l<=r){
ll mid=(l+r)/2;
if(check(mid,m))ans=mid,r=mid-1;
else l=mid+1;
}
cout<<ans<<endl;
return 0;
}