#include <bits/stdc++.h>

using namespace std;

void bfs(long x, long y, long **a, set<pair<long,long> > s, long n, long m)
{
    queue<pair<long,long> > q;
    q.push({x,y});
    while(!q.empty())
    {
        x=q.front().first;
        y=q.front().second;
        q.pop();
        a[x][y]=1;
        if (x<n-1 && s.count({x+1,y})==0 && a[x+1][y]==0) q.push({x+1,y});
        if (y<m-1 && s.count({x,y+1})==0 && a[x][y+1]==0) q.push({x,y+1});
        if (x>0 && s.count({x-1,y})==0 && a[x-1][y]==0) q.push({x-1,y});
        if (y>0 && s.count({x,y-1})==0 && a[x][y-1]==0) q.push({x,y-1});
    }
}

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

    long n,m,k;
    cin >> n >> m >> k;
    long **a=new long*[n];
    for (long i=0;i<n;i++)
    {
        a[i]=new long[m];
        fill(a[i],a[i]+m,0);
    }
    set<pair<long,long> > s;
    for (long i=0;i<k;i++)
    {
        long x,y;
        cin >> x >> y;
        --x;
        --y;
        s.insert({x,y});
    }
    long br=0;
    for (long i=0;i<n;i++)
    {
        for (long j=0;j<m;j++)
        {
            if (s.count({i,j})==0 && a[i][j]==0)
            {
                bfs(i,j,a,s,n,m);
                ++br;
            }
        }
    }
    cout << br;
    return 0;
}