#include <bits/stdc++.h>
using namespace std;
int main ()
{
ios :: sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int cantitate , limita , inaltime;
cin >> cantitate >> limita >> inaltime;
priority_queue <int64_t> candidati[2];
candidati[0].push(inaltime);
candidati[1].push(-inaltime);
int64_t termen = 0 , minim = 0;
for (int indice = 2 ; indice <= cantitate ; indice++)
{
cin >> inaltime;
termen += limita;
if (candidati[0].top() - termen <= inaltime && inaltime <= -candidati[1].top() + termen)
{
candidati[0].push(inaltime + termen);
candidati[1].push(-(inaltime - termen));
}
else
if (candidati[0].top() - termen <= inaltime)
{
candidati[0].push(-candidati[1].top() + 2 * termen);
minim += inaltime - candidati[0].top() + termen;
candidati[1].pop();
candidati[1].push(-(inaltime - termen));
candidati[1].push(-(inaltime - termen));
}
else
{
candidati[1].push(-(candidati[0].top() - 2 * termen));
minim += -candidati[1].top() + termen - inaltime;
candidati[0].pop();
candidati[0].push(inaltime + termen);
candidati[0].push(inaltime + termen);
}
}
cout << minim;
return 0;
}