#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5;
int a[N+1];
int n,c;
__int128_t dp[N+1];
struct line{
int a,b;
line() {a=0,b=0;}
int val(int x){
return a*x+b;
}
};
vector<line>vec;
bool check(line x1,line x2,line x3){
return 1.0*(x3.b-x2.b)/(x2.a-x3.a)>1.0*(x2.b-x1.b)/(x1.a-x2.a);
}
void add(line x){
while(vec.size()>=2&&!check(vec[vec.size()-1],vec[vec.size()-2],x)){
vec.pop_back();
}
vec.push_back(x);
}
int get(int x){
int l=0,r=vec.size()-1;
int ans=0;
while(l<=r){
int m1=l+(r-l)/3;
int m2=r-(r-l)/3;
if(vec[m1].val(x)<vec[m2].val(x)){
ans=vec[m1].val(x);
r=m2-1;
}
else{
ans=vec[m2].val(x);
l=m1+1;
}
}
return ans;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n>>c;
for(int i=1;i<=n;i++){
cin>>a[i];
}
line x;
x.a=-2*a[1];
x.b=a[1]*a[1];
add(x);
for(int i=2;i<=n;i++){
dp[i]=get(a[i])+a[i]*a[i]+c;
x.a=-2*a[i];
x.b=a[i]*a[i]+dp[i];
add(x);
}
vector<int>ans;
while(dp[n]){
int k=dp[n]%10;
dp[n]/=10;
ans.push_back(k);
}
reverse(ans.begin(),ans.end());
for(int k:ans){
cout<<k;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpbnQgbG9uZyBsb25nCmNvbnN0IGludCBOPTJlNTsKaW50IGFbTisxXTsKaW50IG4sYzsKX19pbnQxMjhfdCBkcFtOKzFdOwpzdHJ1Y3QgbGluZXsKICAgIGludCBhLGI7CiAgICBsaW5lKCkge2E9MCxiPTA7fQogICAgaW50IHZhbChpbnQgeCl7CiAgICAgICAgcmV0dXJuIGEqeCtiOwogICAgfQp9Owp2ZWN0b3I8bGluZT52ZWM7CmJvb2wgY2hlY2sobGluZSB4MSxsaW5lIHgyLGxpbmUgeDMpewogICAgcmV0dXJuIDEuMCooeDMuYi14Mi5iKS8oeDIuYS14My5hKT4xLjAqKHgyLmIteDEuYikvKHgxLmEteDIuYSk7Cn0Kdm9pZCBhZGQobGluZSB4KXsKICAgIHdoaWxlKHZlYy5zaXplKCk+PTImJiFjaGVjayh2ZWNbdmVjLnNpemUoKS0xXSx2ZWNbdmVjLnNpemUoKS0yXSx4KSl7CiAgICAgICAgdmVjLnBvcF9iYWNrKCk7CiAgICB9CiAgICB2ZWMucHVzaF9iYWNrKHgpOwp9CmludCBnZXQoaW50IHgpewogICAgaW50IGw9MCxyPXZlYy5zaXplKCktMTsKICAgIGludCBhbnM9MDsKICAgIHdoaWxlKGw8PXIpewogICAgICAgIGludCBtMT1sKyhyLWwpLzM7CiAgICAgICAgaW50IG0yPXItKHItbCkvMzsKICAgICAgICBpZih2ZWNbbTFdLnZhbCh4KTx2ZWNbbTJdLnZhbCh4KSl7CiAgICAgICAgICAgIGFucz12ZWNbbTFdLnZhbCh4KTsKICAgICAgICAgICAgcj1tMi0xOwogICAgICAgIH0KICAgICAgICBlbHNlewogICAgICAgICAgICBhbnM9dmVjW20yXS52YWwoeCk7CiAgICAgICAgICAgIGw9bTErMTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gYW5zOwp9CnNpZ25lZCBtYWluKCl7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKDApO2NvdXQudGllKDApOwogICAgY2luPj5uPj5jOwogICAgZm9yKGludCBpPTE7aTw9bjtpKyspewogICAgICAgIGNpbj4+YVtpXTsKICAgIH0KICAgIGxpbmUgeDsKICAgIHguYT0tMiphWzFdOwogICAgeC5iPWFbMV0qYVsxXTsKICAgIGFkZCh4KTsKICAgIGZvcihpbnQgaT0yO2k8PW47aSsrKXsKICAgICAgICBkcFtpXT1nZXQoYVtpXSkrYVtpXSphW2ldK2M7CiAgICAgICAgeC5hPS0yKmFbaV07CiAgICAgICAgeC5iPWFbaV0qYVtpXStkcFtpXTsKICAgICAgICBhZGQoeCk7CiAgICB9CiAgICB2ZWN0b3I8aW50PmFuczsKICAgIHdoaWxlKGRwW25dKXsKICAgICAgICBpbnQgaz1kcFtuXSUxMDsKICAgICAgICBkcFtuXS89MTA7CiAgICAgICAgYW5zLnB1c2hfYmFjayhrKTsKICAgIH0KICAgIHJldmVyc2UoYW5zLmJlZ2luKCksYW5zLmVuZCgpKTsKICAgIGZvcihpbnQgazphbnMpewogICAgICAgIGNvdXQ8PGs7CiAgICB9Cn0=