#include #include #include #include using namespace std; long solve(int X,vectorx) { vectorpos; for(int p:x) { pos.push_back(p); pos.push_back((p+X/2)%X); pos.push_back((p+(X+1)/2)%X); } sort(pos.begin(),pos.end()); pos.erase(unique(pos.begin(),pos.end()),pos.end()); const int sz=pos.size(); { pos.reserve(sz+sz+sz); for(int i=0;iim0(pos.size()+1),im1(pos.size()+1); for(long p:x) { int l,m,r; if(X%2==0) { l=lower_bound(pos.begin(),pos.end(),p+X-X/2)-pos.begin(); m=lower_bound(pos.begin(),pos.end(),p+X)-pos.begin(); r=lower_bound(pos.begin(),pos.end(),p+X+X/2)-pos.begin(); } else { l=lower_bound(pos.begin(),pos.end(),p+X-X/2)-pos.begin(); m=lower_bound(pos.begin(),pos.end(),p+X)-pos.begin(); r=lower_bound(pos.begin(),pos.end(),p+X+X/2+1)-pos.begin(); } im0[l]+=p+X; im0[m]-=p+X; im1[l]-=1; im1[m]+=1; im0[m]-=p+X; im0[r]+=p+X; im1[m]+=1; im1[r]-=1; } vectorret(sz); for(int i=0;i>N>>X>>Y; vectorx(N),y(N); for(int i=0;i>x[i]>>y[i],x[i]--,y[i]--; long t=solve(X,x); long u=solve(Y,y); cout<