#include <bits/stdc++.h>
using namespace std;

const int maxn=1005;

int n,m,k,ok,a[maxn][maxn],b[maxn][maxn];
int u,v;
bool vis[maxn][maxn],flag[maxn*maxn];

void check(int x,int y,int num)
{
	int nowx=x,nowy=y;
	while(b[nowx][y]==num&&nowx<=n)nowx++;
	while(b[x][nowy]==num&&nowy<=m)nowy++;
	nowx--;nowy--;
	for(int i=x;i<=nowx;i++)
		for(int j=y;j<=nowy;j++)
		{
			if(b[i][j]!=num)ok=0;
			vis[i][j]=true;
		}
}

int main() {
	ios::sync_with_stdio(false);
    std::ifstream fout("user_out");
    freopen("input", "r", stdin);
    cin>>n>>m>>k;
	for(int i=1;i<=k;i++)
	{
		cin>>u>>v;
		a[u][v]=i;
    }
    for(int i=1;i<=n;i++)
    	for(int j=1;j<=m;j++)fout>>b[i][j];
    ok=1;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)if(b[i][j]>k||b[i][j]<=0||(a[i][j]>0&&a[i][j]!=b[i][j]))ok=0;
	if(ok==0)
	{
		cout<<0<<endl;
		return 0;
	}
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
		{
			if(!ok)break;
			if(vis[i][j])continue;
			if(flag[b[i][j]])
			{
				ok=0;
				break;
			}
			flag[b[i][j]]=true;
			check(i,j,b[i][j]);
		}
    cout<<(ok ? 100 : 0)<<endl;
}
