#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;

#define REP(i,n) for(int i=0;i<(int)(n);++i)

int R, C, N;
int size[20];
int table[12][12];

int ans[12][12];
int ans_num;

void dfs(int depth) {
//       REP(r, R) {
//         cout << table[r][0];
//         for(int c = 1; c < C; c++) cout << ' ' << table[r][c];
//         cout << endl;
//       }
//       cout << endl;
  
  if( depth > N ) {
    bool same = true;
    REP(r, R) REP(c, C) if( ans[r][c] != table[r][c] ) same = false;
    if( !same ) {
      ans_num++;
      REP(r, R) REP(c, C) ans[r][c] = table[r][c];
    }
    return;
  }
  if( ans_num >= 2 ) return;
  int r, c;
  REP(i, R) REP(j, C) if( table[i][j] == depth ) {
    r = i;
    c = j;
  }
  
  table[r][c] = 0;
  for(int r1 = 0; r1 <= r; r1++)
    for(int r2 = r; r2 < R; r2++)
      if( size[depth] % (r2 - r1 + 1) == 0 )
        for(int c1 = 0; c1 <= c; c1++)
          for(int c2 = c; c2 < C; c2++)
            if( (r2 - r1 + 1) * (c2 - c1 + 1) == size[depth] ) {
              
              
              bool go = true;
              for(int i = r1; i <= r2; i++)
                for(int j = c1; j <= c2; j++)
                  if( table[i][j] != 0 )
                    go = false;
              
              if( go ) {
                for(int i = r1; i <= r2; i++)
                  for(int j = c1; j <= c2; j++)
                    table[i][j] = depth;
                
                dfs(depth + 1);
                
                for(int i = r1; i <= r2; i++)
                  for(int j = c1; j <= c2; j++)
                    table[i][j] = 0;
              }
            }
  table[r][c] = depth;
}

int main() {
  for(;;) {
    cin >> C >> R >> N;
    if( C == 0 && R == 0 && N == 0 ) break;
    REP(i, N) {
      int x, c; cin >> x >> c;
      size[x] = c;
    }
    REP(r, R) REP(c, C) {
      int v; cin >> v; table[r][c] = v;
    }

    REP(i, R) REP(j, C) ans[i][j] = -1;
    ans_num = 0;
    dfs(1);
    if( ans_num == 1 ) {
      REP(r, R) {
        cout << ans[r][0];
        for(int c = 1; c < C; c++) cout << ' ' << ans[r][c];
        cout << endl;
      }
    }else
      cout << "NA" << endl;
  }
  return 0;
}