#include #include using namespace std; using namespace atcoder; #define ll long long #define rep(i,a,b) for(int i=(a);i<(b);i++) #define repl(i,a,b) for(ll i=(a);i<(b);i++) #define all(a) (a).begin(),(a).end() template bool chmin(T &a,T b){if(a>b){a=b;return true;} return false;} template bool chmax(T &a,T b){if(a> n; vector a(n); rep(i,0,n) cin >> a[i], a[i]--; vector> cycle; vector seen(n,false); rep(i,0,n){ if(seen[i]) continue; vector c; c.push_back(i); int now=i; seen[now]=true; while(a[now] != c[0]){ now=a[now]; c.push_back(now); seen[now]=true; } cycle.push_back(c); } vector ans(n); rep(i,0,cycle.size()){ if(cycle[i].size() == 1) continue; int g=abs(cycle[i][0]-cycle[i].back()); rep(j,0,cycle[i].size()-1){ g=gcd(g,abs(cycle[i][j]-cycle[i][j+1])); } ans[g]+=cycle[i].size()-1; } for(int p=1;p