#include <bits/stdc++.h>
using namespace std;
const int N=5e4+5;
long long sadd[N],dp[N],f[N];
long long g[N];
int q[N];
double xie (int x,int y)
{
return (double)((dp[y]+g[y]-dp[x]-g[x])/(f[y]-f[x]));
}
int main()
{
int n,L;
scanf("%d%d",&n,&L);
for(int i=1;i<=n;i++)
{
scanf("%d",&sadd[i]);
sadd[i]+=sadd[i-1];
f[i]=sadd[i]+i;
g[i]=(f[i]+L+1)*(f[i]+L+1);
}
int l=1,r=1;
g[0]=(L+1)*(L+1);
for(int i=1;i<=n;i++)
{
while(l<r&&xie(q[l],q[l+1])<2*f[i]) l++;
dp[i]=dp[q[l]]+(f[i]-f[q[l]]-1-L)*(f[i]-f[q[l]]-1-L);
while(l<r&&xie(q[r],i)<xie(q[r-1],q[r])) r--;
q[++r]=i;
}
cout<<dp[n];
return 0;
}