#include <bits/stdc++.h>
using namespace std;
void solve() {
  int n, p;
  cin >> n >> p;
  set<pair<int, int> > t;
  for (int i = 0; i < n; i++) {
    int x;
    cin >> x;
    t.insert({x, i});
  }
  queue<int> qu;
  qu.push((*t.begin()).second);
  long long time = (*t.begin()).first;
  long long res[n];
  t.erase(t.begin());
  set<int> cur;
  set<int> elig;
  cur.insert(qu.front());
  for (int i = 0; i < n; i++) {
    int x = qu.front();
    qu.pop();
    cur.erase(x);
    time += p;
    res[x] = time;
    vector<pair<int, int> > tmp;
    for (auto it : t) {
      if (it.first > time) break;
      tmp.push_back(it);
      if (it.second < x && (cur.empty() || it.second < *cur.begin())) {
        cur.insert(it.second);
        qu.push(it.second);
      } else {
        elig.insert(it.second);
      }
    }
    for (int k = 0; k < tmp.size(); k++) {
      t.erase(tmp[k]);
    }
    if (!elig.empty() && (qu.empty() || (*elig.begin() < *cur.begin()))) {
      qu.push(*elig.begin());
      cur.insert(*elig.begin());
      elig.erase(elig.begin());
    }
    if (qu.empty() && !t.empty()) {
      qu.push((*t.begin()).second);
      cur.insert((*t.begin()).second);
      time = (*t.begin()).first;
      t.erase(t.begin());
    }
  }
  for (int i = 0; i < n; i++) cout << res[i] << " ";
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int q = 1;
  for (int kase = 1; kase <= q; kase++) {
    solve();
  }
  return 0;
}
