#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==