#include <bits/stdc++.h>

using namespace std;

int dsu[1000010], rnk[1000010], k;
map<int, bool> bio;
long long n, m;
int matra[1010][1010];

int root(int u)
{
    while (dsu[u]!=u)
    {
        dsu[u]=dsu[dsu[u]];
        u=dsu[u];
    }
    return u;
}

void connect (int u, int v)
{
    if (root(u)!=root(v))
    {
        if (rnk[root(u)]<=rnk[root(v)])
        {
            if (rnk[root(u)]==rnk[root(v)]) rnk[root(v)]++;
            dsu[root(u)]=root(v);
        }
        else
            dsu[root(v)]=root(u);
    }
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    cin>>n>>m>>k;
    for (int i=0; i<k; i++)
    {
        int x, y; cin>>x>>y;
        matra[x][y]=-1;
    }

    for(int i=1; i<=n; i++)
    {
        for (int j=1; j<=m; j++)
        {
            if (matra[i][j]!=-1)
            {
                dsu[(i-1)*m+j]=(i-1)*m+j;
                rnk[(i-1)*m+j]=1;
            }
        }
    }

    for (int i=0; i<=n; i++) matra[i][0]=-1;
    for (int j=0; j<=m; j++) matra[0][j]=-1;
    for (int i=1; i<=n; i++)
    {
        for (int j=1; j<=m; j++)
        {
            if (matra[i][j]!=-1 && matra[i-1][j]!=-1)
            {
                //cout<<i<<" 1 "<<j<<endl;
                connect( (i-2)*m+j, (i-1)*m+j );
            }
            if (matra[i][j]!=-1 && matra[i][j-1]!=-1)
            {
                //cout<<i<<" 2 "<<j<<endl;
                connect( (i-1)*m+j-1, (i-1)*m+j );
            }
            //cout<<(i-1)*m+j<<endl;
        }
    }

    int cnt=0;
    for (int i=1; i<=n; i++)
    {
        for (int j=1; j<=m; j++)
        {
            //cout<<root((i-1)*m+j)<<" ";
            //cout<<"RRR"<<matra[i][j]<<endl;
            if ((matra[i][j]!=-1) && !(bio[root( (i-1)*m+j )]))
            {
                //cout<<i<<" "<<j<<" "<<matra[i][j]<<" "<<root((i-1)*m+j)<<" "<<bio[root( (i-1)*m+j )] <<endl;
                cnt++;
                bio[root( (i-1)*m+j )]=true;
            }
        }
    }

    cout/*<<endl*/<<cnt;
}