#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
// from kactl
struct Line {
mutable long long k, m, p;
bool operator<(const Line& o) const { return k < o.k; }
bool operator<(long long x) const { return p < x; }
};
struct LineContainer : multiset<Line, less<>> {
// (for doubles, use inf = 1/.0, div(a,b) = a/b)
const long long inf = LLONG_MAX;
long long div(long long a, long long b) { // floored division
return a / b - ((a ^ b) < 0 && a % b);
}
bool isect(iterator x, iterator y) {
if (y == end()) { x->p = inf; return false; }
if (x->k == y->k) x->p = x->m > y->m ? inf : -inf;
else x->p = div(y->m - x->m, x->k - y->k);
return x->p >= y->p;
}
void add(long long k, long long m) {
auto z = insert({k, m, 0}), y = z++, x = y;
while (isect(y, z)) z = erase(z);
if (x != begin() && isect(--x, y)) isect(x, y = erase(y));
while ((y = x) != begin() && (--x)->p >= y->p)
isect(x, erase(y));
}
long long query(long long x) {
assert(!empty());
auto l = *lower_bound(x);
return l.k * x + l.m;
}
};
long long c;
int n;
int arr[N];
long long dp[N];
LineContainer hull;
int hullIt;
void read() {
scanf("%d %lld", &n, &c);
for (int i = 1; i <= n; i++) {
scanf("%d", &arr[i]);
}
}
void add(long long k, long long m) {
hull.add(k, m);
}
long long extract(long long x) {
return hull.query(x);
}
void work2() {
for (int i = 2; i <= n; i++) {
int best = -1;
long long val = 4e18;
for (int j = 1; j < i; j++) {
long long cur = 1ll * (arr[i] - arr[j]) * (arr[i] - arr[j]) + dp[j] + c;
if (cur < val) {
val = cur;
best = j;
}
}
dp[i] = val;
printf("%d: best %d dp %lld\n", i, best, dp[i]);
}
}
long long work() {
dp[1] = 0;
add(2 * arr[1], dp[1] - 1ll * arr[1] * arr[1] - c);
for (int i = 2; i <= n; i++) {
dp[i] = extract(arr[i]) - 1ll * arr[i] * arr[i];
// printf("i %d dp %lld\n", i, dp[i]);
add(2 * arr[i], dp[i] - 1ll * arr[i] * arr[i] - c);
}
return -dp[n];
}
int main() {
read();
// work2();
cout << work() << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTiA9IDJlNSArIDU7CgovLyBmcm9tIGthY3RsCgpzdHJ1Y3QgTGluZSB7CgltdXRhYmxlIGxvbmcgbG9uZyBrLCBtLCBwOwoJYm9vbCBvcGVyYXRvcjwoY29uc3QgTGluZSYgbykgY29uc3QgeyByZXR1cm4gayA8IG8uazsgfQoJYm9vbCBvcGVyYXRvcjwobG9uZyBsb25nIHgpIGNvbnN0IHsgcmV0dXJuIHAgPCB4OyB9Cn07CgpzdHJ1Y3QgTGluZUNvbnRhaW5lciA6IG11bHRpc2V0PExpbmUsIGxlc3M8Pj4gewoJLy8gKGZvciBkb3VibGVzLCB1c2UgaW5mID0gMS8uMCwgZGl2KGEsYikgPSBhL2IpCgljb25zdCBsb25nIGxvbmcgaW5mID0gTExPTkdfTUFYOwoJbG9uZyBsb25nIGRpdihsb25nIGxvbmcgYSwgbG9uZyBsb25nIGIpIHsgLy8gZmxvb3JlZCBkaXZpc2lvbgoJCXJldHVybiBhIC8gYiAtICgoYSBeIGIpIDwgMCAmJiBhICUgYik7IAoJfQoJYm9vbCBpc2VjdChpdGVyYXRvciB4LCBpdGVyYXRvciB5KSB7CgkJaWYgKHkgPT0gZW5kKCkpIHsgeC0+cCA9IGluZjsgcmV0dXJuIGZhbHNlOyB9CgkJaWYgKHgtPmsgPT0geS0+aykgeC0+cCA9IHgtPm0gPiB5LT5tID8gaW5mIDogLWluZjsKCQllbHNlIHgtPnAgPSBkaXYoeS0+bSAtIHgtPm0sIHgtPmsgLSB5LT5rKTsKCQlyZXR1cm4geC0+cCA+PSB5LT5wOwoJfQoJdm9pZCBhZGQobG9uZyBsb25nIGssIGxvbmcgbG9uZyBtKSB7CgkJYXV0byB6ID0gaW5zZXJ0KHtrLCBtLCAwfSksIHkgPSB6KyssIHggPSB5OwoJCXdoaWxlIChpc2VjdCh5LCB6KSkgeiA9IGVyYXNlKHopOwoJCWlmICh4ICE9IGJlZ2luKCkgJiYgaXNlY3QoLS14LCB5KSkgaXNlY3QoeCwgeSA9IGVyYXNlKHkpKTsKCQl3aGlsZSAoKHkgPSB4KSAhPSBiZWdpbigpICYmICgtLXgpLT5wID49IHktPnApCgkJCWlzZWN0KHgsIGVyYXNlKHkpKTsKCX0KCWxvbmcgbG9uZyBxdWVyeShsb25nIGxvbmcgeCkgewoJCWFzc2VydCghZW1wdHkoKSk7CgkJYXV0byBsID0gKmxvd2VyX2JvdW5kKHgpOwoJCXJldHVybiBsLmsgKiB4ICsgbC5tOwoJfQp9OwoKbG9uZyBsb25nIGM7CmludCBuOwoKaW50IGFycltOXTsKbG9uZyBsb25nIGRwW05dOwpMaW5lQ29udGFpbmVyIGh1bGw7CmludCBodWxsSXQ7Cgp2b2lkIHJlYWQoKSB7CiAgc2NhbmYoIiVkICVsbGQiLCAmbiwgJmMpOwogIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgc2NhbmYoIiVkIiwgJmFycltpXSk7CiAgfQp9Cgp2b2lkIGFkZChsb25nIGxvbmcgaywgbG9uZyBsb25nIG0pIHsKICBodWxsLmFkZChrLCBtKTsKfQoKbG9uZyBsb25nIGV4dHJhY3QobG9uZyBsb25nIHgpIHsKICByZXR1cm4gaHVsbC5xdWVyeSh4KTsKfQoKdm9pZCB3b3JrMigpIHsKICBmb3IgKGludCBpID0gMjsgaSA8PSBuOyBpKyspIHsKICAgIGludCBiZXN0ID0gLTE7CiAgICBsb25nIGxvbmcgdmFsID0gNGUxODsKCiAgICBmb3IgKGludCBqID0gMTsgaiA8IGk7IGorKykgewogICAgICBsb25nIGxvbmcgY3VyID0gMWxsICogKGFycltpXSAtIGFycltqXSkgKiAoYXJyW2ldIC0gYXJyW2pdKSArIGRwW2pdICsgYzsKICAgICAgaWYgKGN1ciA8IHZhbCkgewogICAgICAgIHZhbCA9IGN1cjsKICAgICAgICBiZXN0ID0gajsKICAgICAgfQogICAgfQoKICAgIGRwW2ldID0gdmFsOwogICAgcHJpbnRmKCIlZDogYmVzdCAlZCBkcCAlbGxkXG4iLCBpLCBiZXN0LCBkcFtpXSk7CiAgfQp9Cgpsb25nIGxvbmcgd29yaygpIHsKICBkcFsxXSA9IDA7CgogIGFkZCgyICogYXJyWzFdLCBkcFsxXSAtIDFsbCAqIGFyclsxXSAqIGFyclsxXSAtIGMpOwoKICBmb3IgKGludCBpID0gMjsgaSA8PSBuOyBpKyspIHsKICAgIGRwW2ldID0gZXh0cmFjdChhcnJbaV0pIC0gMWxsICogYXJyW2ldICogYXJyW2ldOwogICAgLy8gcHJpbnRmKCJpICVkIGRwICVsbGRcbiIsIGksIGRwW2ldKTsKICAgIGFkZCgyICogYXJyW2ldLCBkcFtpXSAtIDFsbCAqIGFycltpXSAqIGFycltpXSAtIGMpOwogIH0KCiAgcmV0dXJuIC1kcFtuXTsKfQoKaW50IG1haW4oKSB7CiAgcmVhZCgpOwogIC8vIHdvcmsyKCk7CiAgY291dCA8PCB3b3JrKCkgPDwgZW5kbDsKICByZXR1cm4gMDsKfQ==