#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 5e4+5;
int n,L;
int a[N],sum[N];
int f[N],q[N],tail=-1,head=0;
int A(int i){
return sum[i]+i;
}
int B(int i){
return sum[i]+i+L+1;
}
int X(int i){
return B(i);
}
int Y(int i){
return f[i]+B(i)*B(i);
}
double slope(int i,int j){
return double(Y(i)-Y(j))/double(X(i)-X(j));
}
signed main(){
cin>>n>>L;
for(int i=1;i<=n;i++){
cin>>a[i];
sum[i]=sum[i-1]+a[i];
}
/*
f[i] = f[j]+(A[i]-B[j])^2
*/
q[++tail] = 0;
for(int i=1;i<=n;i++){
while(tail>head && slope(q[head],q[head+1])<=2*A(i))head++;
int j = q[head];
f[i] = f[j]+(A(i)-B(j))*(A(i)-B(j));
while(tail>head && slope(i,q[tail-1])<=slope(q[tail],q[tail-1]))tail--;
q[++tail] = i;
}
cout<<f[n]<<endl;
return 0;
}
/*
* f[i] = f[j] + A*(sum[i]-sum[j])^2 + B*(sum[i]-sum[j]) + C
* f[i] = f[j] + A*sum[i]^2 - 2A*sum[i]*sum[j]+Asum[j]^2+ B*sum[i] -B*sum[j] +C
* f[i]-B*sum[i]-A*sum[i]^2 = - 2A*sum[i]*sum[j] +A*sum[j]^2 - B*sum[j] +C+f[j]
* X(i) = sum[i]
* K(i) = -2A*sum[i]
* Y(i) = f[i]-B*sum[i]+A*sum[i]^2
*/
#include <iostream>
#include <cstdio>
using namespace std;
#define ll long long
ll sum[1000005],q[1000005],f[10000005];
int n,a,b,c;
ll X(int x)
{
return sum[x];
}
ll Y(int x)
{
return f[x]-b*sum[x]+a*sum[x]*sum[x];
}
double k(int a,int b)
{
return double((Y(b)-Y(a))/(X(b)-X(a)));
}
int main()
{
cin>>n>>a>>b>>c;
for(int i=1;i<=n;i++){
cin>>sum[i];
sum[i]+=sum[i-1];
}
int tail = 0,head = 0;
for(int i=1;i<=n;i++){
while(tail>head && k(q[head],q[head+1])>2*a*sum[i])head++;
int j = q[head];
f[i] = f[j]+a*(sum[i]-sum[j])*(sum[i]-sum[j])+b*(sum[i]-sum[j])+c;
while(tail>head && k(q[tail],q[tail-1])<k(q[tail],i))tail--;
q[++tail] = i;
}
cout<<f[n]<<endl;
return 0;
}