#include <iostream>
using namespace std;
int prx[4]={-1,0,1,0};
int pry[4]={0,1,0,-1};
int t[1000][1000],m,n,k,a[1000],b[1000];
int moze(int x,int y)
{
    if(x>=1&&x<=n&&y>=1&&y<=m) return (t[x][y]==0);
    return 0;
}
void oboji(int x,int y,int boja)
{
    int i;
    t[x][y]=boja;
    for(i=1;i<=4;i++)
    {
        if(moze(x+prx[i],y+pry[i])) oboji(x+prx[i],y+pry[i],boja);
    }
}
int main()
{
    int boja=1,i,j;
    cin>>n>>m>>k;
    for(i=1;i<=k;i++) cin>>a[i]>>b[i];
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++) t[i][j]=0;
    for(i=1;i<=k;i++) t[a[i]][b[i]]=1;
    for(i=1;i<=n;i++)
            for(j=1;j<=m;j++)
                {
                    if(t[i][j]==0)
                    {
                        oboji(i,j,++boja);
                    }
                }
    cout<<boja-1<<endl;
    return 0;
}