using System;

namespace boje
{
    class Program
    {

        static void rek(int x, int y,ref int[,] a, ref int br)
        {
            if (a[x, y] == 0)
            {
                a[x, y] = br;
                rek(x - 1, y, ref a, ref br);
                rek(x + 1, y, ref a, ref br);
                rek(x, y - 1, ref a, ref br);
                rek(x, y + 1, ref a, ref br);
            }
            else
            {
                return;
            }
        }

        static void Main(string[] args)
        {
            int n, m, k;
            string[] t;
            t = Console.ReadLine().Split(' ');
            n = int.Parse(t[0]);
            m = int.Parse(t[1]);
            k = int.Parse(t[2]);
            int[,] a = new int[n+2, m+2];
            for(int i = 0; i < n+2; i++)
            {
                for(int j = 0; j < m+2; j++)
                {
                    if (i == 0 || i == n + 1 || j == 0 || j == m + 1)
                        a[i,j] = 1;
                    else
                        a[i,j] = 0;
                }
            }

            for (int i = 0; i < k; i++)
            {
                t = Console.ReadLine().Split(' ');
                a[int.Parse(t[0]), int.Parse(t[1])] = 1;
            }

            int br = 2;
            for (int i = 1; i < n + 1; i++)
            {
                for (int j = 1; j < m + 1; j++)
                {
                    if (a[i, j] == 0)
                        br++;
                    rek(i,j,ref a,ref br);
                    
                }
            }

            Console.WriteLine(br - 2);
        }
    }
}