#include #include #include using namespace std; using namespace atcoder; using mint = modint998244353; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000001 #define Inf64 4000000000000000001LL int main(){ int n; cin>>n; vector p(n); dsu D(n); rep(i,n){ cin>>p[i]; p[i]--; D.merge(i,p[i]); } auto v = D.groups(); vector ans(n+1); rep(i,v.size()){ int g = 0; rep(j,v[i].size()-1){ g = gcd(g,abs(v[i][j]-v[i][j+1])); } for(int j=1;j*j<=g;j++){ if(g%j==0){ ans[j] += v[i].size()-1; if(j*j!=g)ans[g/j] += v[i].size()-1; } } } for(int i=1;i