#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 14, lg = 18;
int n, l_tbl[lg][maxn * 2], r_tbl[lg][maxn * 2], ans[maxn];
template <class comp>
int query(int *tbl, int l, int r) {
  int ans = max(INT_MIN, INT_MAX, comp());
  for (l += 2 * n, r += 2 * n; l < r; l >>= 1, r >>= 1) {
    if (l % 2) ans = min(ans, tbl[l++], comp());
    if (r % 2) ans = min(ans, tbl[--r], comp());
  }
  return ans;
}
void make_tbl(int k) {
  for (int i = 2 * n - 1; i > 0; --i) {
    l_tbl[k][i] = min(l_tbl[k][i * 2], l_tbl[k][i * 2 + 1]);
    r_tbl[k][i] = max(r_tbl[k][i * 2], r_tbl[k][i * 2 + 1]);
  }
}
int main() {
  ios::sync_with_stdio(0), cin.tie(0);
  cin >> n;
  for (int i = 0; i < n; ++i) {
    int re;
    cin >> re;
    l_tbl[0][2 * n + i] = max(0, i - re);
    r_tbl[0][2 * n + i] = i + re + 1;
    l_tbl[0][3 * n + i] = i + n - re;
    r_tbl[0][3 * n + i] = min(2 * n, i + n + re + 1);
  }
  make_tbl(0);
  for (int k = 0; k + 1 < lg; ++k) {
    for (int i = 0; i < 2 * n; ++i) {
      l_tbl[k + 1][2 * n + i] =
          query<less<int>>(l_tbl[k], l_tbl[k][2 * n + i], r_tbl[k][2 * n + i]);
      r_tbl[k + 1][2 * n + i] = query<greater<int>>(
          r_tbl[k], l_tbl[k][2 * n + i], r_tbl[k][2 * n + i]);
    }
    make_tbl(k + 1);
  }
  for (int i = 0; i < 2 * n; ++i) {
    int l = i, r = i + 1;
    for (int j = lg - 1; j >= 0; --j) {
      int nxl = query<less<int>>(l_tbl[j], l, r),
          nxr = query<greater<int>>(r_tbl[j], l, r);
      if (nxr - nxl < n) {
        ans[i] += 1 << j;
        l = nxl;
        r = nxr;
      }
    }
  }
  for (int i = 0; i < n; ++i) {
    cout << (n == 1 ? 0 : min(ans[i], ans[i + n]) + 1) << ' ';
  }
  cout << '\n';
}
