#include <bits/stdc++.h>
using namespace std;
inline int read(){
int s = 0,f = 1;char c = getchar();
while (!isdigit(c)){if (c == '-')f = -1;c = getchar();}
while (isdigit(c)){s = (s << 3) + (s << 1) + (c ^ 48);c = getchar();}
return s*f;
}
const int N = 5e4 + 4;
int dp[N],sum[N],q[N],n,L;
int l = 1,r = 1;
int f(int k){
return dp[k] + sum[k] * sum[k] + 2 * L * sum[k];
}
// + 2 * (i - 1 - L) * (k - sum[k])
int g(int x,int y){
return sum[x] - sum[y];
}
int main()
{
n = read(); L = read();
L++;
for (int i=1;i<=n;i++)
sum[i] = sum[i-1] + read() + i;
q[r] = 0;
for (int i=1;i<=n;i++){
while (l < r && f(q[l+1]) - f(q[l]) <= 2 * sum[i] * g(q[l+1],q[l]))
l++;
int k = q[l];
//cout << k << endl;
dp[i] = dp[k] + pow(sum[i] - sum[k] - L,2);
while (l < r && (f(q[r]) - f(q[r-1])) * g(i,q[r]) >= (f(i) - f(q[r])) * g(q[r],q[r-1]))
r--;
q[++r] = i;
}
cout << dp[n] << endl;
return 0;
}