#include<bits/stdc++.h>
using namespace std;
#define ll long long
multiset<ll>lef,rig;
ll mn=0,lsh=0,rsh=0;
// void torig(ll x){
// if(x<=*lef.rbegin()){
// mn+=*lef.rbegin()-x;
// lef.extract(*lef.rbegin());
// lef.insert(x);
// }
// else rig.insert(x);
// }
// void tolef(ll x){
// if(x>=*rig.begin()){
// mn+=x-*rig.begin();
// rig.extract(*rig.begin());
// rig.insert(x);
// }
// else lef.insert(x);
// }
void add(ll x){
ll a=*rig.begin()+rsh,b=*lef.rbegin()+lsh;
if(x>=a){
mn+=x-a;
lef.insert(a-lsh);
rig.extract(a-rsh);
rig.insert(x-rsh);
rig.insert(x-rsh);
}
else if(x<=b){
mn+=b-x;
rig.insert(b-rsh);
lef.extract(b-lsh);
lef.insert(x-lsh);
lef.insert(x-lsh);
}
else{
lef.insert(x-lsh);
rig.insert(x-rsh);
}
}
void solve(){
ll n,h;
cin>>n>>h;
lef.insert(-1e18);
rig.insert(1e18);
for(int i=0;i<n;i++){
ll x;
cin>>x;
add(x);
rsh+=h,lsh-=h;
}
cout<<mn;
}
int main(){
ios_base::sync_with_stdio(0);cin.tie(0);
int _=1;
// cin>>_;
while(_--) solve();
}