#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000 * 1000 * 1000 + 7;
const long long MAX = 200005;
long long n, d;
long long A[200005];
long long to[MAX];
int asdnasdkns[MAX];
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  freopen("In.txt", "r", stdin);
  long long ans = 0;
  long long pos = 0;
  cin >> n >> d;
  vector<pair<long long, long long> > v;
  for (long long i = 0; i < n; i++) {
    cin >> A[i];
    v.push_back({A[i], i});
    if (A[i] < A[pos]) {
      pos = i;
    }
  }
  for (long long i = 0; i < n; i++) {
    to[i] = pos;
  }
  sort(v.begin(), v.end());
  for (auto x : v) {
    long long val = x.first, pos = x.second;
    asdnasdkns[pos] = 1;
    long long posL = pos - 1;
    while (posL >= 0 && abs(to[posL] - posL) * d + A[to[posL]] + A[posL] >
                            abs(posL - pos) * d + A[pos] + A[posL]) {
      to[posL] = pos;
      posL--;
    }
    posL = pos + 1;
    while (posL < n && abs(to[posL] - posL) * d + A[to[posL]] + A[posL] >
                           abs(posL - pos) * d + A[pos] + A[posL]) {
      to[posL] = pos;
      posL++;
    }
  }
  for (long long i = 0; i < n; i++) {
    if (to[i] != i) ans += abs(to[i] - i) * d + A[to[i]] + A[i];
  }
  cout << ans;
}
