#include <bits/stdc++.h>
using namespace std;
template <typename T, typename S>
inline T smax(T &a, const S &b) {
  return a < b ? a = b : a;
}
int n, a[int(1e5 + 20)];
pair<int, int> rmq[17][17][int(1e5 + 20)];
pair<int, int> merge(pair<int, int> l, pair<int, int> r, int dist) {
  pair<int, int> res = l;
  smax(res.first, r.first - dist);
  smax(res.second, r.second + dist);
  if (res.first + res.second + 1 >= n) res = {0, n};
  return res;
}
inline void build(int id) {
  for (int l = 0; l < 17 - 1; l++)
    for (int i = 0; i < n; i++)
      rmq[id][l + 1][i] =
          merge(rmq[id][l][i], rmq[id][l][(i + (1 << l)) % n], 1 << l);
}
inline pair<int, int> get_rmq(int id, int pos, pair<int, int> g) {
  int l = (pos - g.first + n) % n;
  int d = 31 - __builtin_clz(g.first + g.second + 1);
  int r = (pos + g.second + 1 - (1 << d) + n) % n;
  pair<int, int> q = merge(rmq[id][d][l], rmq[id][d][r], (r - l + n) % n);
  q.first += g.first;
  q.second -= g.first;
  return q;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (int i = 0; i < n; i++) cin >> a[i];
  if (n == 1) return cout << "0\n", 0;
  for (int i = 0; i < n; i++) {
    rmq[0][0][i] = {a[i], a[i]};
    if (2 * a[i] + 1 >= n) rmq[0][0][i] = {0, n};
  }
  build(0);
  for (int l2 = 1; l2 < 17; l2++) {
    for (int i = 0; i < n; i++)
      rmq[l2][0][i] = get_rmq(l2 - 1, i, rmq[l2 - 1][0][i]);
    build(l2);
  }
  for (int i = 0; i < n; i++) {
    int res = 0;
    pair<int, int> g(0, 0);
    for (int k = 17 - 1; ~k; k--) {
      pair<int, int> np = get_rmq(k, i, g);
      if (np.first + np.second + 1 < n) {
        res += 1 << k;
        g = np;
      }
    }
    cout << res + 1 << ' ';
  }
  return 0;
}
