#include <bits/stdc++.h>
using namespace std;
int n;
long long H[1000003];
vector<int> vec;
long long ft[1000003];
void update(int u, long long val) {
  for (; u <= n; u += (u & -u)) ft[u] += val;
}
void update(int u, int v, long long val) {
  update(u, val);
  update(v + 1, -val);
}
long long query(int u) {
  if (u == 0)
    return 0;
  else
    return ft[u] + query(u - (u & -u));
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%lld", &H[i]);
    update(i, i, H[i]);
  }
  for (int i = 2; i <= n; i++) {
    while (vec.size() && query(i - 1) + 2 <= query(i)) {
      int x = vec.back();
      vec.pop_back();
      long long sel = query(i) - query(i - 1);
      if (sel >= i - x + 1) {
        update(x, i - 1, 1);
        update(i, i, -(i - x));
      } else {
        sel--;
        if (sel > 0) {
          update(x, x + sel - 1, 1);
          update(i, i, -sel);
          vec.push_back(x + sel);
        }
      }
    }
    long long sel = query(i) - query(i - 1);
    update(1, i - 1, (sel) / i);
    update(i, i, -(sel) / i * (i - 1));
    sel = query(i) - query(i - 1);
    if (sel == 0) vec.push_back(i);
    sel--;
    if (sel > 0) {
      update(1, sel, 1);
      update(i, i, -sel);
      vec.push_back(sel + 1);
    }
  }
  for (int i = 1; i <= n; i++)
    printf("%lld%c", query(i), (i == n) ? '\n' : ' ');
}
