#include <bits/stdc++.h>
using namespace std;
int N, ty, ind;
long long T, t, p, ans[100100];
set<int> standing, waiting;
struct cmp {
  bool operator()(pair<long long, pair<int, int> > e1,
                  pair<long long, pair<int, int> > e2) {
    return e1 > e2;
  }
};
priority_queue<pair<long long, pair<int, int> >,
               vector<pair<long long, pair<int, int> > >, cmp>
    events;
int main() {
  cin.sync_with_stdio(false);
  cin >> N >> p;
  for (int i = 1; i <= N; ++i) {
    cin >> t;
    events.push(make_pair(t, make_pair(-1, i)));
  }
  while (events.size()) {
    pair<long long, pair<int, int> > e = events.top();
    events.pop();
    t = e.first;
    ind = e.second.second;
    ty = e.second.first;
    if (ty == -1) {
      if (standing.empty() || ind < *standing.begin()) {
        if (standing.empty()) T = t;
        standing.insert(ind);
        T += p;
        events.push(make_pair(T, make_pair(1, ind)));
      } else {
        waiting.insert(ind);
      }
    } else {
      ans[ind] = t;
      standing.erase(ind);
      while (waiting.size()) {
        int y = *waiting.begin();
        if (standing.empty() || y < *standing.begin()) {
          waiting.erase(y);
          standing.insert(y);
          T += p;
          events.push(make_pair(T, make_pair(1, y)));
        } else {
          break;
        }
      }
    }
  }
  for (int i = 1; i <= N; ++i) {
    cout << ans[i] << " ";
  }
  return 0;
}
