#include using namespace std; typedef signed long long ll; #undef _P #define _P(...) (void)printf(__VA_ARGS__) #define FOR(x,to) for(x=0;x<(to);x++) #define FORR(x,arr) for(auto& x:arr) #define ITR(x,c) for(__typeof(c.begin()) x=c.begin();x!=c.end();x++) #define ALL(a) (a.begin()),(a.end()) #define ZERO(a) memset(a,0,sizeof(a)) #define MINUS(a) memset(a,0xff,sizeof(a)) //------------------------------------------------------- ll H,W; int N; ll X[101010],Y[101010]; struct area{ int type; int X[2],Y[2]; } ; void add_line(vector& A,int X0,int Y0,int X1,int Y1) { if(X0>X1) return; if(X0==X1 && Y0>Y1) return; area a; if(Y0==Y1) a.type=0; else if(X0==X1) a.type=1; else if(Y0& A,int X0,int Y0,int X1,int Y1) { if(X0>X1) return; if(Y0>Y1) return; area a; a.type=4; a.X[0]=X0; a.X[1]=X1; a.Y[0]=Y0; a.Y[1]=Y1; A.push_back(a); } ll get_area(area a) { ll ret=0; if(a.type==4) { return (ll)(a.X[1]-a.X[0]+1)*(a.Y[1]-a.Y[0]+1); } else { return max(abs(a.X[0]-a.X[1]),abs(a.Y[0]-a.Y[1])+1); } } vector hoge(int X0,int Y0,int X1,int Y1) { vector V; if(X0>X1) swap(X0,X1),swap(Y0,Y1); if(X0==X1) { add_line(V,0,(Y[0]+Y[1])/2,W-1,(Y[0]+Y[1])/2); } else if(Y0==Y1) { add_line(V,(X[0]+X[1])/2,0,(X[0]+X[1])/2,H-1); } else if(abs(X[0]-X[1])abs(Y[0]-Y[1])) { int x0,x1; if(Y[0]>W>>H; cin>>N; int C[2]={}; FOR(i,N) { cin>>X[i]>>Y[i]; X[i]--; Y[i]--; C[(X[i]+Y[i])%2]++; } if(C[0]>0 && C[0]