//这题就是一个简单的深搜,感觉还可以,写一遍直接A
#include<iostream>
#define M 110
using namespace std;
int a[M][M];
int b[4][2]={-1,0,1,0,0,1,0,-1};
int used[M][M];
int n,m,num=0;
int dfs(int p,int q)
{
int i,x,y;
used[p][q]=1;
for(i=0;i<4;i++)
{
x=p+b[i][0];
y=q+b[i][1];
if(!used[x][y]&&a[x][y])
{
num++;
dfs(x,y);
}
}
return num;
}
int main()
{
int k,i,j,cnt,Max=0,p,q;
memset(used,0,sizeof(used));
memset(a,0,sizeof(a));
scanf("%d%d%d",&n,&m,&k);
for(i=0;i<k;i++)
{
scanf("%d%d",&p,&q);
a[p][q]=1;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(!used[i][j]&&a[i][j])
{
num=1;
// used[i][j]=1;
cnt=dfs(i,j);
if(Max<cnt)
Max=cnt;
}
}
}
printf("%d/n",Max);
}