#include<bits/stdc++.h>
using namespace std;
const int N=150;
bool st[N*N];
int match[N*N];
bool mp[N][N];
int dx[8]={-2,-2,2,2,-1,-1,1,1};
int dy[8]={-1,1,-1,1,-2,2,-2,2};
int h[N*N],ne[8*N*N],e[8*N*N],idx;
void add(int a,int b){
e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
bool dfs(int u){
for(int i=h[u];i!=-1;i=ne[i]){
int j=e[i];
if(!st[j]){
st[j]=1;
if((match[j]==-1)||dfs(match[j])){
match[j]=u;
return true;
}
}
}
return false;
}
int main(){
memset(h,-1,sizeof h);
int n,m;scanf("%d%d",&n,&m);
int k;scanf("%d",&k);
for(int i=0;i<k;i++){
int a,b;scanf("%d%d",&a,&b);
mp[a-1][b-1]=1;
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if((i+j)&1) continue;
if(mp[i][j]) continue;
for(int op=0;op<8;op++){
int x=i+dx[op];
int y=j+dy[op];
if(x<0||x>=n||y<0||y>=m) continue;
if(mp[x][y]) continue;
add(i*m+j,x*m+y);
}
}
}
memset(match,-1,sizeof match);
int ans=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(!((i+j)&1)){
if(!mp[i][j]){
memset(st,false,sizeof st);
if(dfs(i*m+j)) ans++;
}
}
}
}
printf("%d\n",n*m-ans-k);
return 0;
}