#include <bits/stdc++.h>
int dl[300010][21], dr[300010][21];
int l[300010][21], r[300010][21];
int nl[300010][21], nr[300010][21];
int n;
int pl[300010], pr[300010], ans[100010];
int a[100010], w[300010];
using namespace std;
inline int cmin(int &x, int y, int z) {
  if (y < z) return x = y, 1;
  return x = z, 0;
}
inline int cmax(int &x, int y, int z) {
  if (y > z) return x = y, 1;
  return x = z, 0;
}
void buildl() {
  for (int i = 1; i < 20; i++)
    for (int j = 1; j <= (n * 3) - (1 << i) + 1; j++)
      nl[j][i] = cmin(dl[j][i], dl[j][i - 1], dl[j + (1 << (i - 1))][i - 1])
                     ? nl[j][i - 1]
                     : nl[j + (1 << (i - 1))][i - 1];
}
void buildr() {
  for (int i = 1; i < 20; i++)
    for (int j = 1; j <= (n * 3) - (1 << i) + 1; j++)
      nr[j][i] = cmax(dr[j][i], dr[j][i - 1], dr[j + (1 << (i - 1))][i - 1])
                     ? nr[j][i - 1]
                     : nr[j + (1 << (i - 1))][i - 1];
}
int calcl(int i, int x, int y) {
  assert(x <= y);
  int dt = w[y - x + 1];
  int num = 0;
  int posl = cmin(num, dl[x][dt], dl[y - (1 << dt) + 1][dt])
                 ? nl[x][dt]
                 : nl[y - (1 << dt) + 1][dt];
  int posr = cmax(num, dr[x][dt], dr[y - (1 << dt) + 1][dt])
                 ? nr[x][dt]
                 : nr[y - (1 << dt) + 1][dt];
  return min(l[posl][i], l[posr][i]);
}
int calcr(int i, int x, int y) {
  assert(x <= y);
  int dt = w[y - x + 1];
  int num = 0;
  int posl = cmin(num, dl[x][dt], dl[y - (1 << dt) + 1][dt])
                 ? nl[x][dt]
                 : nl[y - (1 << dt) + 1][dt];
  int posr = cmax(num, dr[x][dt], dr[y - (1 << dt) + 1][dt])
                 ? nr[x][dt]
                 : nr[y - (1 << dt) + 1][dt];
  return max(r[posl][i], r[posr][i]);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  if (n == 1) {
    printf("0\n");
    return 0;
  }
  w[0] = -1;
  for (int i = 1; i <= n * 3; i++) w[i] = w[i >> 1] + 1;
  for (int i = 1; i <= n; i++) {
    l[i][0] = max(i - a[i], 1);
    r[i][0] = min(i + a[i], n * 3);
    l[i + n][0] = max(i + n - a[i], 1);
    r[i + n][0] = min(i + n + a[i], n * 3);
    l[i + n + n][0] = max(i + n + n - a[i], 1);
    r[i + n + n][0] = min(i + n + n + a[i], n * 3);
  }
  for (int j = 1; j <= n * 3; j++)
    dl[j][0] = l[j][0], dr[j][0] = r[j][0], nl[j][0] = nr[j][0] = j;
  buildl();
  buildr();
  for (int i = 1; i < 20; i++) {
    for (int j = 1; j <= n * 3; j++)
      l[j][i] = calcl(i - 1, l[j][i - 1], r[j][i - 1]);
    for (int j = 1; j <= n * 3; j++)
      r[j][i] = calcr(i - 1, l[j][i - 1], r[j][i - 1]);
  }
  for (int i = n + 1; i <= n + n; i++) pl[i] = pr[i] = i;
  for (int j = 19; j >= 0; j--) {
    for (int i = n + 1; i <= n + n; i++)
      if (calcr(j, pl[i], pr[i]) - calcl(j, pl[i], pr[i]) + 1 < n) {
        ans[i - n] += (1 << j);
        int numl = calcl(j, pl[i], pr[i]), numr = calcr(j, pl[i], pr[i]);
        pl[i] = numl;
        pr[i] = numr;
      }
  }
  for (int i = 1; i <= n; i++) printf("%d%c", ans[i] + 1, i == n ? '\n' : ' ');
}
