#include <bits/stdc++.h>
using namespace std;
const int MAXN = 3e5 + 10;
const int LOG = 20;
int T, n, R[LOG][MAXN], L[LOG][MAXN], rmnq[LOG][MAXN], rmxq[LOG][MAXN],
    lg[MAXN], ans[MAXN];
pair<int, int> a[MAXN];
int getmax(int l, int r) {
  r++;
  int x = lg[r - l];
  return max(rmxq[x][l], rmxq[x][r - (1 << x)]);
}
int getmin(int l, int r) {
  r++;
  int x = lg[r - l];
  return min(rmnq[x][l], rmnq[x][r - (1 << x)]);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  T = 1;
  while (T--) {
    cin >> n;
    if (n == 1) return cout << 0, 0;
    for (int i = 1; i <= n; i++) {
      int x;
      cin >> x;
      R[0][i] = min(3 * n, i + x);
      R[0][n + i] = min(3 * n, n + i + x);
      R[0][2 * n + i] = min(3 * n, 2 * n + i + x);
      L[0][i] = max(1, i - x);
      L[0][n + i] = max(1, n + i - x);
      L[0][2 * n + i] = max(1, 2 * n + i - x);
      a[i] = {i, i};
      a[n + i] = {n + i, n + i};
      a[2 * n + i] = {2 * n + i, 2 * n + i};
    }
    for (int i = 2; i <= 3 * n; i++) {
      lg[i] = lg[i / 2] + 1;
    }
    for (int i = 1; i < 20; i++) {
      for (int j = 1; j <= 3 * n; j++) {
        rmnq[0][j] = L[i - 1][j];
        rmxq[0][j] = R[i - 1][j];
      }
      for (int j = 1; j < 20; j++) {
        for (int k = 1; k + (1 << j) - 1 <= 3 * n; k++) {
          rmnq[j][k] = min(rmnq[j - 1][k], rmnq[j - 1][k + (1 << (j - 1))]);
          rmxq[j][k] = max(rmxq[j - 1][k], rmxq[j - 1][k + (1 << (j - 1))]);
        }
      }
      for (int j = 1; j <= 3 * n; j++) {
        R[i][j] = getmax(L[i - 1][j], R[i - 1][j]);
        L[i][j] = getmin(L[i - 1][j], R[i - 1][j]);
      }
    }
    for (int i = 19; i >= 0; i--) {
      for (int j = 1; j <= 3 * n; j++) {
        rmnq[0][j] = L[i][j];
        rmxq[0][j] = R[i][j];
      }
      for (int j = 1; j < 20; j++) {
        for (int k = 1; k + (1 << j) - 1 <= 3 * n; k++) {
          rmnq[j][k] = min(rmnq[j - 1][k], rmnq[j - 1][k + (1 << (j - 1))]);
          rmxq[j][k] = max(rmxq[j - 1][k], rmxq[j - 1][k + (1 << (j - 1))]);
        }
      }
      for (int j = 1; j <= 3 * n; j++) {
        int x = getmax(a[j].first, a[j].second);
        int y = getmin(a[j].first, a[j].second);
        if (x - y < n - 1) {
          a[j].first = y;
          a[j].second = x;
          ans[j] += (1 << i);
        }
      }
    }
    for (int i = n + 1; i <= 2 * n; i++) {
      cout << ans[i] + 1 << ' ';
    }
  }
  return 0;
}
