#include #define int long long using namespace std; struct UnionFind{ int par[10000000],rank[10000000]; int mx[10000000]; UnionFind(int N){ for(int i=0;i=rank[y])par[y]=x,rank[x]+=rank[y],mx[x]=max(mx[x],mx[y]); else par[x]=y,rank[y]+=rank[x],mx[y]=max(mx[x],mx[y]); } bool same(int x,int y){ return find(x)==find(y); } }; signed main(){ int N,A,B; cin>>N>>A>>B; vector V(N); for(int &i:V)cin>>i; UnionFind U(N); for(int i=0;i=V[j];j++)U.unite(i,j); } for(int i=0;i