#include using namespace std; using ll=long long; #define int ll #define rng(i,a,b) for(int i=int(a);i=int(a);i--) #define per(i,b) gnr(i,0,b) #define pb push_back #define eb emplace_back #define a first #define b second #define bg begin() #define ed end() #define all(x) x.bg,x.ed #ifdef LOCAL #define dmp(x) cerr<<__LINE__<<" "<<#x<<" "< void chmax(t&a,u b){if(a void chmin(t&a,u b){if(b using vc=vector; template using vvc=vc>; using pi=pair; using vi=vc; template ostream& operator<<(ostream& os,const pair& p){ return os<<"{"< ostream& operator<<(ostream& os,const vc& v){ os<<"{"; for(auto e:v)os< void dmpr(ostream&os,const T&t,const Args&... args){ os< ostream& operator<<(ostream&os,const array&a){ return os<(all(a)); } template void print_tuple(ostream&,const T&){ } template void print_tuple(ostream&os,const T&t){ if(i)os<<","; os<(t); print_tuple(os,t); } template ostream& operator<<(ostream&os,const tuple&t){ os<<"{"; print_tuple<0,tuple,Args...>(os,t); return os<<"}"; } void print(ll x,int suc=1){ cout<>i; return i; } vi readvi(int n,int off=0){ vi v(n); rep(i,n)v[i]=read()+off; return v; } template void print(const vector&v,int suc=1){ rep(i,v.size()) print(v[i],i==int(v.size())-1?suc:2); } string readString(){ string s; cin>>s; return s; } template T sq(const T& t){ return t*t; } //#define CAPITAL void yes(bool ex=true){ #ifdef CAPITAL cout<<"YES"< void mkuni(vc&v){ sort(all(v)); v.erase(unique(all(v)),v.ed); } ll rand_int(ll l, ll r) { //[l, r] #ifdef LOCAL static mt19937_64 gen; #else static random_device rd; static mt19937_64 gen(rd()); #endif return uniform_int_distribution(l, r)(gen); } template int lwb(const vc&v,const t&a){ return lower_bound(all(v),a)-v.bg; } signed main(){ cin.tie(0); ios::sync_with_stdio(0); cout<>wid>>hei; wid--;hei--; int n;cin>>n; vc xy; rep(i,n){ int x,y;cin>>x>>y; x--;y--; xy.eb(x,y); } int ans=0; { int a=inf,b=-inf,c=inf,d=-inf; for(auto p:xy){ int x,y;tie(x,y)=p; chmin(a,x+y); chmax(b,x+y); chmin(c,x-y); chmax(d,x-y); } if(a!=b&&c!=d&&b-a==d-c&&(a+b)%2==0){ bool z=true; for(auto p:xy){ int x,y;tie(x,y)=p; bool ok=false; if(a==x+y) ok=1; if(b==x+y) ok=1; if(c==x-y) ok=1; if(d==x-y) ok=1; z&=ok; } if(z) ans--; } } dmp(ans); rep(_,2){ dmp(xy); int a=inf,b=-inf,c=inf,d=-inf; for(auto p:xy){ int x,y;tie(x,y)=p; chmin(a,x+y); chmax(b,x+y); chmin(c,x-y); chmax(d,x-y); } if(a==b)goto relka; if((a+b)%2)goto relka; if(d-c>b-a)goto relka; { vi z; for(auto p:xy){ int x,y;tie(x,y)=p; if(a!=x+y&&b!=x+y) z.pb(x-y); } mkuni(z); dmp(z); if(z.size()){ bool ok=true; for(auto v:z){ if(v!=c&&v!=d) ok=false; } if(ok){ if(z.size()==1){ if((a+z[0])%2==0) ans++; }else if(d-c==b-a){ if((a+c)%2==0&&(a+d)%2==0) ans++; } } }else{ int e=c,f=d; if((a+c)%2)e--; if((a+d)%2)f++; ans+=max(((b-a)-(f-e))/2+1,int(0)); } } relka:; dmp(ans); for(auto&p:xy) p=pi(wid-p.a,p.b); } rep(_,4){ int a=inf,b=-inf,c=inf,d=-inf; for(auto p:xy){ int x,y;tie(x,y)=p; chmin(a,x+y); chmax(b,x+y); chmin(c,x-y); chmax(d,x-y); } if((a+c)%2==0){ bool ng=false; for(auto p:xy){ int x,y;tie(x,y)=p; if(a!=x+y&&c!=x-y) ng=true; } if(!ng){ int mx=-inf; for(auto p:xy){ int x,y;tie(x,y)=p; chmax(mx,x); } ans+=wid-mx; } } dmp(xy); dmp(ans); for(auto&p:xy) p=pi(hei-p.b,p.a); swap(hei,wid); } cout<