#include #include #include using namespace std; struct unionfind { vector par,_size; unionfind(long n) : par(n+1), _size(n+1,1) { for(long long i=0; i(n); _size = vector(n); for(long long i=0; i> n >> a >> b; vector x(n,0); for (int i=0; i> x[i]; unionfind uni(n); vector imos(n+1, 0); for (int i=0; i= r) continue; int lindex = l - x.begin(); int rindex = r - x.begin(); imos[lindex]++; imos[rindex-1]--; uni.merge(i, lindex); } for (int i=0; i0) uni.merge(i,i+1); for (int i=0; i