#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define pb push_back
const int N=1e5+5,MAXA=1e6+5,inf=2e9+5,MOD=982451653;
multiset<int> lef,rig;
int mn,shl=0,shr=0;
void insert(int A){
if (A >= *rig.begin()+shr) {
mn += A - (*rig.begin()+shr);
lef.insert(*rig.begin()+shr-shl);
rig.extract(rig.begin());
rig.insert(A-shr);
rig.insert(A-shr);
}
else if (A <= *lef.rbegin()+shl) {
mn += *lef.rbegin()+shl - A;
rig.insert(*lef.rbegin()+shl-shr);
lef.extract(*lef.rbegin());
lef.insert(A-shl);
lef.insert(A-shl);
}
else {
lef.insert(A-shl);
rig.insert(A-shr);
}
}
signed main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
//dp[x]->min(-inf,x-1), dp[x]+=abs(x-a[i])
int n,h; cin>>n>>h;
int a[n];
lef.insert(-inf); rig.insert(inf);
for(int i=0;i<n;i++){
cin>>a[i];
if(i==0){
mn=0;
lef.insert(a[i]); rig.insert(a[i]);
}
else{
shr+=h; shl-=h;
insert(a[i]);
}
}
cout<<mn;
}