using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace petlja4_2020
{
    class Program
    {
        static int[,] tabla;
        static int brojRedova;
        static int brojKolona;
        static int trenutnaBoja = 0;
        
        static void Main(string[] args)
        {
            string[] s = Console.ReadLine().Split();
            brojRedova = int.Parse(s[0]);
            brojKolona = int.Parse(s[1]);
            int brojCrnihPolja = int.Parse(s[2]);

            tabla = new int[brojRedova, brojKolona];

            for (int i = 0; i < brojCrnihPolja; i++)
            {
                s = Console.ReadLine().Split();
                tabla[int.Parse(s[0]) - 1, int.Parse(s[1]) - 1] = -1;
            }

            try
            {
                for (int i = 0; i < brojRedova; i++)
                {
                    for (int j = 0; j < brojKolona; j++)
                    {
                        if (tabla[i, j] == 0)
                        {
                            trenutnaBoja++;
                            obojiSve(i, j, i, j);
                        }
                    }
                }
            }
            catch (Exception)
            {
                Console.WriteLine(trenutnaBoja);
                return;
            }
            Console.WriteLine(trenutnaBoja);
        }

        static void obojiSve(int red, int kolona, int prosliRed, int proslaKolona)
        {
            tabla[red, kolona] = trenutnaBoja;
            if ( ((red - 1) >= 0) && (tabla[red - 1, kolona] != -1) )
            {
                if ( ((red - 1) != prosliRed) || (kolona != proslaKolona) )
                    if(tabla[red - 1, kolona] == 0)
                        obojiSve(red - 1, kolona, red, kolona);
            }
            if ( ((red + 1) <= (brojRedova - 1)) && (tabla[red + 1, kolona] != -1) )
            {
                if ( ((red + 1) != prosliRed) || (kolona != proslaKolona) )
                    if (tabla[red + 1, kolona] == 0)
                        obojiSve(red + 1, kolona, red, kolona);
            }
            if ( ((kolona - 1) >= 0) && (tabla[red, kolona - 1] != -1) )
            {
                if ( (red != prosliRed) || ((kolona - 1) != proslaKolona) )
                    if (tabla[red, kolona - 1] == 0)
                        obojiSve(red, kolona - 1, red, kolona);
            }
            if ( ((kolona + 1) <= (brojKolona - 1)) && (tabla[red,kolona + 1] != -1) )
            {
                if ( (red != prosliRed) || ((kolona + 1) != proslaKolona) )
                    if (tabla[red, kolona + 1] == 0)
                        obojiSve(red, kolona + 1, red, kolona);
            }
            return;
        }
    }
}