#include <bits/stdc++.h>
using namespace std;
const int N = 1000000 + 10;
const long long inf = 1e9 * 1e9;
int a[N], sum[N];
long long f[N];
int Q[N];
int n, m, tail;
int x(int i) {
return i;
}
long long y(int i) {
return f[i] + 1LL * sum[i] * (i + 1);
}
int k(int i) {
return sum[i];
}
int main() {
cin >> n >> m;
for (int i=1; i<=n; i++) {
cin >> a[i];
sum[i] = sum[i-1] + a[i];
}
Q[tail++] = 0;
for (int i=1; i<=n; i++) {
int j, left = 0, right = tail - 1, mid;
while (left <= right) {
mid = (left + right) / 2;
if (mid == tail - 1 || (y(Q[mid+1]) - y(Q[mid])) > 1LL * k(i) * (x(Q[mid+1]) - x(Q[mid]))) {
j = Q[mid];
right = mid - 1;
}
else left = mid + 1;
}
f[i] = f[j] - 1LL * (sum[i] - sum[j]) * (j + 1) + m;
while (tail >= 2 && (y(i) - y(Q[tail-1])) * (x(Q[tail-1]) - x(Q[tail-2])) <= (y(Q[tail-1]) - y(Q[tail-2])) * (x(i) - x(Q[tail-1]))) tail --;
Q[tail++] = i;
}
cout << -f[n] << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE4gPSAxMDAwMDAwICsgMTA7CmNvbnN0IGxvbmcgbG9uZyBpbmYgPSAxZTkgKiAxZTk7CgppbnQgYVtOXSwgc3VtW05dOwpsb25nIGxvbmcgZltOXTsKaW50IFFbTl07CmludCBuLCBtLCB0YWlsOwoKaW50IHgoaW50IGkpIHsKCXJldHVybiBpOwp9Cgpsb25nIGxvbmcgeShpbnQgaSkgewoJcmV0dXJuIGZbaV0gKyAxTEwgKiBzdW1baV0gKiAoaSArIDEpOwp9CgppbnQgayhpbnQgaSkgewoJcmV0dXJuIHN1bVtpXTsKfQoKaW50IG1haW4oKSB7CgljaW4gPj4gbiA+PiBtOwoJZm9yIChpbnQgaT0xOyBpPD1uOyBpKyspIHsKCQljaW4gPj4gYVtpXTsKCQlzdW1baV0gPSBzdW1baS0xXSArIGFbaV07Cgl9CglRW3RhaWwrK10gPSAwOwoJZm9yIChpbnQgaT0xOyBpPD1uOyBpKyspIHsKCQlpbnQgaiwgbGVmdCA9IDAsIHJpZ2h0ID0gdGFpbCAtIDEsIG1pZDsKCQl3aGlsZSAobGVmdCA8PSByaWdodCkgewoJCQltaWQgPSAobGVmdCArIHJpZ2h0KSAvIDI7CgkJCWlmIChtaWQgPT0gdGFpbCAtIDEgfHwgKHkoUVttaWQrMV0pIC0geShRW21pZF0pKSA+IDFMTCAqIGsoaSkgKiAoeChRW21pZCsxXSkgLSB4KFFbbWlkXSkpKSB7CgkJCQlqID0gUVttaWRdOwoJCQkJcmlnaHQgPSBtaWQgLSAxOwoJCQl9CgkJCWVsc2UgbGVmdCA9IG1pZCArIDE7CgkJfQoJCWZbaV0gPSBmW2pdIC0gMUxMICogKHN1bVtpXSAtIHN1bVtqXSkgKiAoaiArIDEpICsgbTsKCQl3aGlsZSAodGFpbCA+PSAyICYmICh5KGkpIC0geShRW3RhaWwtMV0pKSAqICh4KFFbdGFpbC0xXSkgLSB4KFFbdGFpbC0yXSkpIDw9ICh5KFFbdGFpbC0xXSkgLSB5KFFbdGFpbC0yXSkpICogKHgoaSkgLSB4KFFbdGFpbC0xXSkpKSB0YWlsIC0tOwoJCVFbdGFpbCsrXSA9IGk7Cgl9Cgljb3V0IDw8IC1mW25dIDw8IGVuZGw7CglyZXR1cm4gMDsKfQ==