#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll M=50001;
ll n,c[M],m;
ll sumc[M];
ll q[M];
ll dp[M];
ll pow1(ll x){
return x*x;
}
ll work1(ll x){
return pow1(sumc[x]+m+x);
}
ll work2(ll x){
return dp[x]+pow1(sumc[x]+x+m);
}
int main(){
scanf("%lld%lld",&n,&m);
for(ll i=1;i<=n;i++)scanf("%lld",&c[i]);
for(ll i=1;i<=n;i++)sumc[i]=sumc[i-1]+c[i];
ll l=1,r=1;
m++;
memset(dp,0x3f,sizeof dp);
dp[0]=0;
for(ll i=1;i<=n;i++){
while(l<r&&(work2(q[l+1])-work2(q[l]))<=2*(sumc[i]+i)*(work1(q[l+1])-work1(q[l])))l++;
dp[i]=dp[q[l]]+pow1(sumc[i]+i-sumc[q[l]]-q[l]-m);
while(l<r&&(work2(q[r])-work2(q[r-1]))*(work1(i)-work1(q[r]))>=(work2(i)-work2(q[r]))*(work1(q[r-1])-work1(q[r])))r--;
q[++r]=i;
}
printf("%lld",dp[n]);
return 0;
}