#include <cstdio>
#define MN 1000001
int i, j, n, x[MN], dn, L[MN];
long long A, B, C, f[MN], S[MN];
char buffer[5*MN];
double d[MN];
inline double g(int a) {
return (double)(f[i]-f[a]+A*(S[i]*S[i]-S[a]*S[a]))/(2*A*(S[i]-S[a]));
}
int main() {
scanf("%d%lld%lld%lld\n",&n,&A,&B,&C);
gets(buffer+1);
int xn = 1;
for (i = 1; buffer[i]; i++) {
if (buffer[i] == ' ') xn++;
else x[xn] = x[xn]*10+(buffer[i]-'0');
}
d[dn = 1] = -999999999999;
for (i = j = 1; i <= n; i++) {
S[i] = S[i-1]+x[i];
while (j+1 <= dn && d[j+1] <= S[i]) j++;
if (j > dn) j = dn;
f[i] = f[L[j]] + A*(S[i]-S[L[j]])*(S[i]-S[L[j]])+C;
while (dn >= 2 && g(L[dn]) <= d[dn]) dn--;
L[++dn] = i;
d[dn] = g(L[dn-1]);
}
printf("%lld",f[n]+B*S[n]);
}
I2luY2x1ZGUgPGNzdGRpbz4KI2RlZmluZSBNTiAxMDAwMDAxCmludCBpLCBqLCBuLCB4W01OXSwgZG4sIExbTU5dOwpsb25nIGxvbmcgQSwgQiwgQywgZltNTl0sIFNbTU5dOwpjaGFyIGJ1ZmZlcls1Kk1OXTsKZG91YmxlIGRbTU5dOwppbmxpbmUgZG91YmxlIGcoaW50IGEpIHsKCXJldHVybiAoZG91YmxlKShmW2ldLWZbYV0rQSooU1tpXSpTW2ldLVNbYV0qU1thXSkpLygyKkEqKFNbaV0tU1thXSkpOwp9CmludCBtYWluKCkgewoJc2NhbmYoIiVkJWxsZCVsbGQlbGxkXG4iLCZuLCZBLCZCLCZDKTsKCWdldHMoYnVmZmVyKzEpOwoJaW50IHhuID0gMTsKCWZvciAoaSA9IDE7IGJ1ZmZlcltpXTsgaSsrKSB7CgkJaWYgKGJ1ZmZlcltpXSA9PSAnICcpIHhuKys7CgkJZWxzZSB4W3huXSA9IHhbeG5dKjEwKyhidWZmZXJbaV0tJzAnKTsKCX0KCWRbZG4gPSAxXSA9IC05OTk5OTk5OTk5OTk7Cglmb3IgKGkgPSBqID0gMTsgaSA8PSBuOyBpKyspIHsKCQlTW2ldID0gU1tpLTFdK3hbaV07CgkJd2hpbGUgKGorMSA8PSBkbiAmJiBkW2orMV0gPD0gU1tpXSkgaisrOwoJCWlmIChqID4gZG4pIGogPSBkbjsKCQlmW2ldID0gZltMW2pdXSArIEEqKFNbaV0tU1tMW2pdXSkqKFNbaV0tU1tMW2pdXSkrQzsKCQl3aGlsZSAoZG4gPj0gMiAmJiBnKExbZG5dKSA8PSBkW2RuXSkgZG4tLTsKCQlMWysrZG5dID0gaTsKCQlkW2RuXSA9IGcoTFtkbi0xXSk7Cgl9CglwcmludGYoIiVsbGQiLGZbbl0rQipTW25dKTsKfQ==