#include using namespace std; using ll=long long; #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define rrep(i, s, n) for (int i = (s); i < (int)(n); i++) const long long mod=998244353; const long long mod2=469762049; const long long mod100=1000000007; int N; int P[200009]; bool already[200009]; int ans[200009]; void solve(vectorcycle){ setdat; cycle.push_back(cycle[0]); for(int i=1;i<(int)(cycle.size());i++){ int d=abs(cycle[i]-cycle[i-1]); for(int j=1;j*j<=d;j++){ if(d%j==0){ int a=d/j,b=j; if(a==b){ if(dat.contains(a)) ans[a]++; else dat.insert(a); } else{ if(dat.contains(a)) ans[a]++; else dat.insert(a); if(dat.contains(b)) ans[b]++; else dat.insert(b); } } } } } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cin>>N; for(int i=1;i<=N;i++) cin>>P[i]; for(int i=1;i<=N;i++){ already[i]=false; ans[i]=0; } for(int i=1;i<=N;i++){ if(already[i]) continue; vectorcycle; int p=i; while(true){ if(already[p]) break; already[p]=true; cycle.push_back(p); p=P[p]; } solve(cycle); } for(int i=1;i