#pragma GCC optimize("O3") #pragma GCC optimize("Ofast") #pragma GCC optimize("unroll-loops") #pragma GCC target("avx,avx2") #include #define INF 1000000001LL #define LNF 1000000000000000001LL #define MOD 1000000007LL #define MAX 300001 #define long long long #define all(x) x.begin(),x.end() using namespace std; class UnionFind { public: vector parent; vector cnt; int n; void init(int size) { n = size; parent = vector(n); cnt = vector(n); for(int i = 0; i> n >> a >> b; vector arr(n); for(int i = 0; i> arr[i]; UnionFind uf; uf.init(n); vector cnt(n+1); for(int i = 0; i