#include int abs(int n) { if (n < 0) n *= -1; return n; } int p[200005]; int ans[200005]; int v[200005]; int used[200005]; int main() { int n; scanf("%d", &n); int i, j, k; for (i = 0; i < n; i++) { scanf("%d", &p[i]); p[i]--; } for (i = 0; i < n; i++) ans[i] = 0; for (i = 0; i < n; i++) v[i] = -1; for (i = 0; i < n; i++) used[i] = 0; int d; for (i = 0; i < n; i++) { if (used[i] > 0) continue; used[i]++; for (j = i;;) { d = abs(p[j] - j); for (k = 1; k * k <= d; k++) { if (d % k > 0) continue; if (v[k] < i) v[k] = i; else ans[k]++; if (k * k < d) { k = d / k; if (v[k] < i) v[k] = i; else ans[k]++; k = d / k; } } j = p[j]; if (j == i) break; used[j] = 1; } } for (i = 1; i < n; i++) printf("%d\n", ans[i]); return 0; }