#include <bits/stdc++.h>
using namespace std;
void cout_vector(vector<int> v) {
  for (long long unsigned i = 0; i < v.size(); i++) cout << v[i] << " ";
  cout << endl;
}
int sum_vector(vector<int> v) { return accumulate(v.begin(), v.end(), 0); }
void sort_vector(vector<int> &v) { sort(v.begin(), v.end()); }
void sort_comp(vector<int> &v, bool func(int, int)) {
  sort(v.begin(), v.end(), func);
}
bool comp(int a, int b) {
  bool aend = 0;
  if (a % 2) a--, aend = 1;
  if (b % 2) b--;
  a /= 2;
  b /= 2;
  if (a == b) {
    if (aend) return 1;
    return 0;
  }
  if (a < b) return 1;
  return 0;
}
long long gcd(long long a, long long b) {
  while (a) {
    long long temp = a;
    a = b % a;
    b = temp;
  }
  return b;
}
long long lcm(long long a, long long b) { return (a * b) / gcd(a, b); }
string binary(long long num) {
  string ans = "";
  do {
    ans = to_string(num % 2) + ans;
    num /= 2;
  } while (num);
  return ans;
}
const int sz = 1e6 + 13;
void solve() {
  long long n;
  cin >> n;
  long long arr[sz];
  long long sum = 0;
  for (int i = 0; i < n; i++) {
    cin >> arr[i];
    sum += arr[i];
  }
  long long low = 0;
  long long high = 1e12;
  while (low < high) {
    long long mid = (low + high) / 2;
    long long csum = n * (2 * mid + n - 1) / 2;
    if (csum > sum)
      high = mid;
    else if (csum == sum)
      low = high = mid;
    else
      low = mid + 1;
  }
  sum -= n * (2 * low + n - 1) / 2;
  sum = low + n - 1 + sum;
  if (sum == low + n - 1) {
    for (long long i = 0; i < n - 1; i++) {
      cout << low + i << " ";
    }
    cout << low + n - 1;
  } else {
    for (long long i = 0; i < n - 1; i++) {
      cout << low + i << " ";
      if (low + i == sum) cout << sum << " ";
    }
  }
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(NULL);
  int t;
  t = 1;
  while (t--) solve();
  return 0;
}
