#include<bits/stdc++.h>
#define int long long
#define intt __int128
using namespace std;
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
int n, h; cin>>n>>h;
priority_queue<int> le;
priority_queue<int, vector<int>, greater<int>> ri;
int lelazy = 0, rilazy = 0;
intt curx = 0, cury = 0, slope = 0;
for(int i = 1; i <= n; i++){
int x; cin>>x;
//Min range
lelazy -= h; curx -= h; rilazy += h;
//Add x
cury += abs(curx - x); slope--;
if(le.size() == 0 || le.top()+lelazy >= x){
le.push(x-lelazy); le.push(x-lelazy);
}
else{
ri.push(x-rilazy); ri.push(x-rilazy);
}
//Rebalanced
while(le.size() < ri.size()){
int y = ri.top() + rilazy; ri.pop();
le.push(y-lelazy);
}
while(le.size() > ri.size()){
int y = le.top() + lelazy; le.pop();
ri.push(y-rilazy);
}
}
vector<int> p;
while(le.size() > 0){
p.push_back(le.top() + lelazy); le.pop();
}
while(ri.size() > 0){
p.push_back(ri.top() + rilazy); ri.pop();
}
sort(p.begin(), p.end());
int ans = 1e18;
for(int i : p){
cury += slope * (i-curx);
curx = i; slope++;
ans = min(ans, (int)cury);
}
cout<<ans;
}