#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];
deque<int> Q;
int n, m;

int x(int i) {
	return sum[i];
}

long long y(int i) {
	return f[i] + 1LL * sum[i] * 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.push_back(0);
	for (int i=1; i<=n; i++) {
		while (Q.size() >= 2 && y(Q[1]) - y(Q[0]) <= 2LL * sum[i] * (x(Q[1]) - x(Q[0]))) Q.pop_front();
		int j = Q.front(), tail;
		f[i] = f[j] + 1LL * (sum[i] - sum[j]) * (sum[i] - sum[j]) + m;
		while ((tail = Q.size()) >= 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]))) 
				Q.pop_back();
		Q.push_back(i);
	}
	cout << f[n] << endl;
	return 0;
}