#include <bits/stdc++.h>
using namespace std;
// #include <atcoder/all>
// using namespace atcoder;
#define rep(i, n) for (ll i = 0; i < (n); ++i)
#define rep1(i, n) for (ll i = 1; i <= n; ++i)
#define reps(i, s, e) for (ll i = s; i <= e; ++i)
#define rrep(i, n) for (ll i = n - 1; 0 <= i; --i)
#define all(v) v.begin(), v.end()
#define endl "\n"
template <class T>
bool chmax(T& a, const T& b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
bool chmin(T& a, const T& b) {
  if (b < a) {
    a = b;
    return 1;
  }
  return 0;
}
using ll = long long;
using ld = long double;
using cp = complex<ld>;
using pa = pair<ll, ll>;
using tup = tuple<ll, ll, ll>;
using vp = vector<pair<ll, ll> >;
using vtup = vector<tuple<ll, ll, ll> >;
using st = string;
using vs = vector<string>;
using vc = vector<char>;
using vvi = vector<vector<ll> >;
using vvc = vector<vector<char> >;
using vi = vector<ll>;
const ll MOD1 = 1000000007;
const ll MOD2 = 998244353;
const ll INF = (1LL << 60);

void init() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL), cout.tie(NULL);
  cout << fixed << setprecision(15);
}

int main() {
  init();

  ll n, d;
  cin >> n >> d;

  vi a(n);
  a[0] = 0;

  ll ai;
  rep(i, n - 1) {
    cin >> ai;
    a[i + 1] = a[i] + ai;
  }

  rep(i, n - 1) { a[i + 1] = max(a[i] + d, a[i + 1]); }
  rep(i, n) { cout << a[i] << (i != n - 1 ? " " : endl); }
}