#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("O2,no-stack-protector,unroll-loops,fast-math")
const int maxn = 3e5 + 10, maxm = 2e5 + 500, lg = 19, mod = 1e9 + 7, inf = 1e18;
struct segmax {
  int mxx[maxn << 1];
  segmax() { memset(mxx, -69, sizeof(mxx)); }
  void goz(int i, int x) {
    for (mxx[i += maxn] = x; i > 1; i >>= 1)
      mxx[i >> 1] = max(mxx[i], mxx[i ^ 1]);
  }
  int get(int l, int r) {
    int ret = -mod;
    for (l += maxn, r += maxn + 1; l < r; l >>= 1, r >>= 1) {
      if (l & 1) ret = max(mxx[l++], ret);
      if (r & 1) ret = max(ret, mxx[--r]);
    }
    return ret;
  }
} s1, s2;
int n, a[maxn], L[lg + 1][maxn], R[lg + 1][maxn], lj[maxn], rj[maxn], ans[maxn];
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cin >> n;
  if (n == 1) return cout << 0, 0;
  for (int i = n; i < 2 * n; i++)
    cin >> a[i], a[i - n] = a[i + n] = a[i], lj[i] = rj[i] = i;
  for (int i = 0; i < 3 * n; i++)
    L[0][i] = max(0, i - a[i]), R[0][i] = min(3 * n - 1, i + a[i]);
  for (int j = 1; j <= lg; j++) {
    for (int i = 0; i < 3 * n; i++)
      s1.goz(i, -L[j - 1][i]), s2.goz(i, +R[j - 1][i]);
    for (int i = 0; i < 3 * n; i++)
      L[j][i] = -s1.get(L[j - 1][i], R[j - 1][i]),
      R[j][i] = +s2.get(L[j - 1][i], R[j - 1][i]);
  }
  for (int j = lg; j >= 0; j--) {
    for (int i = 0; i < 3 * n; i++) s1.goz(i, -L[j][i]), s2.goz(i, +R[j][i]);
    for (int i = n; i < 2 * n; i++) {
      int nl = -s1.get(lj[i], rj[i]), nr = +s2.get(lj[i], rj[i]);
      if (nr - nl + 1 < n) lj[i] = nl, rj[i] = nr, ans[i] += (1 << j);
    }
  }
  for (int i = n; i < 2 * n; i++) cout << ans[i] + 1 << ' ';
  return 0;
}
