#include <stdio.h>
#include <stdlib.h>
#include <string.h>

unsigned M,N,K,boja=1;
static int mat[1000][1000],a,b;
int lX[4]={-1,0,1,0};
int lY[4]={0,-1,0,1};

void provera()
{
    int i,j;
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
        {
            if(mat[i][j]==0)
            {
                boja++;
                boji(i,j);
            }
        }
    }
}

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

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

int main()
{
    scanf("%u%u%u",&M,&N,&K);
    while(getchar()!='\n');
    for(int i=0;i<K;i++)
    {
        scanf("%d%d",&a,&b);
        mat[a-1][b-1]=1;
    }
    provera();
    printf("%u",boja-1);
    return 0;
}