#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; typedef long long int ll; typedef pair P; typedef pair Pl; template struct BIT{ //1-indexed using F=function; const F f; vector bit; int size; BIT(int n, const F f):f(f), size(n), bit(n+1, 0){} T sum(int i){ T s=0; while(i>0){ s=f(s, bit[i]); i-=(i&(-i)); } return s; } void add(int i, T x){ while(i<=size){ bit[i]=f(bit[i], x); i+=(i&(-i)); } } }; int n, Q; ll h[50050]; vector ind[50050]; int a[50050], b[50050], c[50050], d[50050], e[50050]; ll ans[50050]; int q[50050]; vector vq[100010]; vector vl[100010], vr[100010]; void calc(int e){ BIT bit(2*n, [](int a, int b){ return a+b;}); for(auto k:ind[e]){ vl[a[k]].push_back(k); vr[c[k]].push_back(k); } for(int i=0; i<2*n; i++){ for(auto k:vl[i]){ bit.add(b[k]+1, 1); bit.add(d[k]+1, -1); } for(auto k:vr[i]){ bit.add(b[k]+1, -1); bit.add(d[k]+1, 1); } for(auto k:vq[i]){ if(bit.sum(q[k]+1)>0) ans[k]^=h[e]; } vl[i].clear(); vr[i].clear(); } } int sum[500][500]; vector vl2[100010], vr2[100010]; void calc2(int e){ if(ind[e].empty()) return; vector vx(2*ind[e].size()), vy(2*ind[e].size()); int j=0; for(int j=0; j0){ vl2[vx[i]].push_back({{vy[j], vy[j+1]}, h[e]}); vr2[vx[i+1]].push_back({{vy[j], vy[j+1]}, h[e]}); } } } } void calc3(){ BIT bit(2*n, [](ll x, ll y){ return (x^y);}); for(int i=0; i<2*n; i++){ for(auto p:vl2[i]){ bit.add(p.first.first+1, p.second); bit.add(p.first.second+1, p.second); } for(auto p:vr2[i]){ bit.add(p.first.first+1, p.second); bit.add(p.first.second+1, p.second); } for(auto k:vq[i]){ ans[k]^=bit.sum(q[k]+1); } } } int main() { cin>>n; for(int i=0; i>Q; for(int i=0; i=200) calc(i); else calc2(i); } calc3(); for(int i=0; i