2 5 10
2 2
1 1
1 4
2 1
1 2
1 5
2 4
2 5
1 3
2 3
 2 2 2
1 1
2 2
 3 3 9
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
 7 5 35
5 3
3 5
1 1
2 5
6 4
7 2
5 1
3 4
6 5
7 3
4 1
2 2
4 2
2 4
4 3
3 3
6 1
1 2
4 5
1 3
2 1
5 5
7 5
7 1
6 2
1 4
1 5
3 2
4 4
5 2
2 3
6 3
7 4
5 4
3 1
 1 5 4
1 1
1 2
1 4
1 5
 1 1 1
1 1
 5 7 21
4 4
4 5
5 5
5 6
5 7
5 1
5 2
4 2
3 2
3 1
3 7
3 6
2 6
1 6
1 7
1 1
1 2
1 3
1 4
2 4
3 4
 2 1 1
1 1
 2 2 4
2 1
1 1
1 2
2 2
 3000 3000 1
2222 738
 5 7 35
1 2
2 3
5 1
5 7
4 4
5 3
3 1
2 6
4 5
2 7
4 1
2 1
2 2
1 7
5 6
3 6
4 6
1 6
1 1
3 3
3 4
4 2
2 5
5 5
3 5
2 4
1 5
1 3
4 3
5 4
1 4
3 7
4 7
3 2
5 2
 5 4 1
4 1
 3 4 12
2 3
3 2
2 2
2 1
1 2
3 1
1 4
1 3
3 3
2 4
3 4
1 1
 3 3 3
1 1
2 2
3 3

8
 1
 6
 26
 4
 0
 20
 0
 2
 1
 28
 1
 9
 3

//unsolved
#include<iostream>
#include<cstdio>
using namespace std;
int n,m,q;
int f[18000005];
bool a[6005][6005]; 
int pos[20][5],move[10][5]={{0,0,0},{0,0,-1},{0,0,1},{0,1,-1},{0,1,1},{0,1,0},{0,-1,-1},{0,-1,0},{0,-1,1}};
int roots[20],farthers[20];

inline int gf(int x)
{
	if(x!=f[x])return f[x]=gf(f[x]);
	return x;
}

inline int num(int x,int y)
{
	return (x-1)*2*m+y;
}

int main()
{
	cin>>n>>m>>q;
	int ans=0;
	
	for(int i=1;i<=n*m*2;i++)f[i]=i;
	while(q--)
	{
		int x,y;
		cin>>x>>y;
		a[x][y]=1;
		a[x][y+m]=1;
		int num1=num(x,y),num2=num(x,y+m);
		/*
		for(int i=1;i<=n*m*2;i++)cout<<i<<" ";
		cout<<endl;
		for(int i=1;i<=n*m*2;i++)cout<<f[i]<<" ";
		cout<<endl;
		*/
		//for(int i=1;i<=n*m*2;i++)t[i]=f[i];
		for(int i=1;i<=8;i++)
		{
			pos[i][1]=x+move[i][1];
			pos[i][2]=y+move[i][2];
			//cout<<"#"<<pos[i][1]<<" "<<pos[i][2]<<endl;
			if(a[pos[i][1]][pos[i][2]]==1 && pos[i][1]>0 && pos[i][2]>0 && pos[i][1]<=n && pos[i][2]<=2*m) 
			{
				farthers[i]=gf(num(pos[i][1],pos[i][2]));
				roots[i]=farthers[i];
				f[gf(num1)]=roots[i];
			}
		}
		for(int i=9;i<=16;i++)
		{
			pos[i][1]=x+move[i-8][1];
			pos[i][2]=y+m+move[i-8][2];
			//cout<<"#"<<pos[i][1]<<" "<<pos[i][2]<<endl;
			if(a[pos[i][1]][pos[i][2]]==1 && pos[i][1]>0 && pos[i][2]>0 && pos[i][1]<=n && pos[i][2]<=2*m)
			{
				farthers[i]=gf(num(pos[i][1],pos[i][2]));
				roots[i]=farthers[i];
				f[gf(num2)]=roots[i];
			}
		}
		/*
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=m;j++)cout<<a[i][j];
			cout<<endl;
		}
		*/
		/*
		for(int i=1;i<=n*m*2;i++)cout<<i<<" ";
		cout<<endl;
		for(int i=1;i<=n*m*2;i++)cout<<f[i]<<" ";
		cout<<endl;
		*/
		//cout<<"1*"<<num1<<" "<<gf(num1)<<endl;
		//cout<<"2*"<<num2<<" "<<gf(num2)<<endl;
		//cout<<endl;
		if(gf(num1)!=gf(num2))ans++;
		else
		{
			
			for(int i=1;i<=16;i++)
			{
				if(a[pos[i][1]][pos[i][2]]==1 && pos[i][1]>0 && pos[i][2]>0 && pos[i][1]<=n && pos[i][2]<=2*m) 
				{
					//cout<<"####"<<num(pos[i][1],pos[i][2])<<"   "<<roots[i]<<endl;
					f[farthers[i]]=roots[i];
				}
			}
			//for(int i=1;i<=n*m*2;i++)f[i]=t[i];
			a[x][y]=0;
			a[x][y+m]=0;
			/*
			for(int i=1;i<=n*m*2;i++)cout<<i<<" ";
			cout<<endl;
			for(int i=1;i<=n*m*2;i++)cout<<f[i]<<" ";
			cout<<endl;
			*/
		}
	}
	cout<<ans;
	return 0;
} 
    					    		 		 	   	   			