#include<iostream>
using namespace std;

int ans[10][10];
int g[10][10];
int y,x,n,b[15],k[15],py[15],px[15];
bool flag,res;

void rec(int a){
  if(a==n){
    if(flag)res = false;
    else{
      for(int i=0;i<y;i++)
	for(int j=0;j<x;j++)ans[i][j] = g[i][j];
      flag = true;
    }
  }else{
    int ty = py[b[a]-1], tx = px[b[a]-1];
    for(int h=1;h<=k[a];h++){
      int w = k[a]/h;
      if(h*w==k[a]){
	for(int sy=0;sy<h;sy++)
	  for(int sx=0;sx<w;sx++){
	    bool f = true;
	    for(int i=0;i<h;i++)
	      for(int j=0;j<w;j++){
		if(ty-sy+i<0 || tx-sx+j<0 || y<=ty-sy+i || x<=tx-sx+j){
		  f = false;
		  break;
		}
		if(g[ty-sy+i][tx-sx+j] && g[ty-sy+i][tx-sx+j]!=b[a]){
		  f = false;
		  break;
		}
		if(!f)break;
	      }
	    if(f){
	      for(int i=0;i<h;i++)
		for(int j=0;j<w;j++)g[ty-sy+i][tx-sx+j] = b[a];
	      rec(a+1);
	      if(!res)return;
	      for(int i=0;i<h;i++)
		for(int j=0;j<w;j++)g[ty-sy+i][tx-sx+j] = 0;
	      g[py[b[a]-1]][px[b[a]-1]] = b[a];
	    }
	  }
      }
    }
  }
}
		

int main(){
  while(cin >> x >> y >> n && (x||y||n)){
    for(int i=0;i<n;i++)cin >> b[i] >> k[i];
    for(int i=0;i<y;i++)
      for(int j=0;j<x;j++){
	cin >> g[i][j];
	if(g[i][j]){
	  py[g[i][j]-1] = i;
	  px[g[i][j]-1] = j;
	}
      }

    flag = false;
    res = true;
    rec(0);
    if(flag && res){
      for(int i=0;i<y;i++){
	for(int j=0;j<x-1;j++)cout << ans[i][j] << " ";
	cout << ans[i][x-1] << endl;
      }
    }else cout << "NA\n";
  }
}