#include using namespace std; using ll = long long; void solve() { int n; cin >> n; vector p(n + 1); for (int i = 1; i <= n; i++) cin >> p[i]; vector visited(n + 1, false); vector cnt(n + 1, 0LL); for (int i = 1; i <= n; i++) { vector group; int t = i; while (!visited[t]) { group.push_back(t); visited[t] = true; t = p[t]; } sort(group.begin(), group.end()); int g = 0; int L = group.size(); for (int i = 0; i < L - 1; i++) { g = gcd(g, group[i + 1] - group[i]); } cnt[g] += (L - 1); } for (int k = 1; k < n; k++) { ll sum = 0; for (int j = 1; j * k <= n; j++) { sum += cnt[j * k]; } cout << sum << endl; } } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int T = 1; while (T--) { solve(); } return 0; }