#include <stdio.h>

static int n,m,mat[100][100];

int prx[4]={-1,0,1,0};
int pry[4]={0,1,0,-1};

int moze(int x,int y)
{
    if(x>=0 && y>=0 && x<n && y<m)
        return mat[x][y]==0;
    return 0;
}

void boji(int x,int y,int boja)
{
    int i;
    mat[x][y]=boja;
    for(i=0 ;i<4;i++)
    {
        if(moze(x+prx[i],y+pry[i]))
            boji(x+prx[i],y+pry[i],boja);
    }
    return;
}

int main()
{
    int k,i,j,a,b,boja=1;
    scanf("%d%d%d",&n,&m,&k);

    for(i=0;i<k;i++)
    {
        scanf("%d%d",&a,&b);
        mat[a-1][b-1]=1;
    }
    for(i=0; i<n ; i++)
        for(j=0; j<m ; j++)
            if(mat[i][j]==0)
                boji(i,j,++boja);
    printf("%d",boja-1);
    return 0;
}