#include <iostream>

using namespace std;

static long a[1000][1000];

void prebroj(long b,long x,long y,long n,long m)
{
    if(x<n && y<m && y>=0 && x>=0){
        a[x][y]=b;
        if(a[x][y+1]==-1 && y+1<m){
            prebroj(b,x,y+1,n,m);
        }
        if(a[x+1][y]==-1 && x+1<n){
            prebroj(b,x+1,y,n,m);
        }
        if(a[x][y-1]==-1 && y>0){
            prebroj(b,x,y-1,n,m);
        }
        if(a[x-1][y]==-1 && x>0){
            prebroj(b,x-1,y,n,m);
        }
    }
}

int main()
{

    bool nepopunjen=true;
    long n,m,k,b=0,x,y;
    cin>>n>>m>>k;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            a[i][j]=-1;
        }
    }
    for(int i=0;i<k;i++){
        cin>>x>>y;
        a[x-1][y-1]=0;
    }
    while(nepopunjen){
        b++;
        long i,j;
        for(i=0;i<n;i++){
            for(j=0;j<m;j++){
                if(a[i][j]==-1){
                    nepopunjen=false;
                    break;
                }
            }
            if(j<n){
                break;
            }
        }
        if(nepopunjen){
            b--;
            break;
        }
        nepopunjen=true;
        prebroj(b,i,j,n,m);
    }
    cout<<b;
    return 0;
}