#include using namespace std; using ll = long long; int gcd(int a, int b) { return (a ? gcd(b % a, a) : b); } int main () { int N; cin >> N; vector P(N); for (auto& a : P) { cin >> a; a --; } vector X; vector cnt(N + 1, 0); vector did(N, 0); for (int i = 0; i < N; i ++) { if (did[i]) continue; X = {i}; did[i] = 1; int j = P[i]; while (!did[j]) { did[j] = 1; X.push_back(j); j = P[j]; } int g= 0; int xmin = *min_element(X.begin(), X.end()); for (int x : X) { g = gcd(g, x-xmin); } cnt[g] += (X.size() - 1); } for (int i = 1; i < N; i ++) { ll ans = 0; for (int j = 1; i * j <= N; j ++) { ans += cnt[i*j]; } cout << ans << endl; } }