#include <bits/stdc++.h>
using namespace std;

int m[1010][1010],vis[1010][1010];

int dx[]={1,1,0,-1,-1,-1, 0, 1};
int dy[]={0,1,1, 1, 0,-1,-1,-1};

int countOfIsland,r,c;

bool check(int i,int j){
  return (0<=i && i<r && 0<=j && j<c);
}

void dfs(int i,int j){
  countOfIsland++;
  vis[i][j]=1;
  for(int k=0;k<8;k++){
    int x=i+dx[k],y=j+dy[k];
    if(check(x,y) && !vis[x][y] && m[x][y]==1){
      dfs(x,y);
    }
  }
}

int main(){
    int k, l, b;

  cin>> r >> c >> k;
  for(int i=0;i<r;i++)
    {
    for(int j=0;j<c;j++)
      m[i][j] = 1;
    }
  for(int i = 0; i < k; i++)
  {
      cin >> l >> b;
      m[l][b] = 0;
  }
  int numIsland=0;
  for(int i=0;i<r;i++){
    for(int j=0;j<c;j++){
      if(!vis[i][j] && m[i][j]==1){
        countOfIsland = 0;
        dfs(i,j);
        if(countOfIsland>1)numIsland++;
    }
  }



    }
          cout<<numIsland;
      return 0;
}