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

typedef pair<int,int> pii;
vector<vector<pii> > v;
int tab[16][16];
int m[16][16];
int ans[16][16];
int x, y, N;

int search(int n) {
	if(n > N) {
		for(int i = 0; i < y; i++) {
			for(int j = 0; j < x; j++) {
				ans[i][j] = tab[i][j];
			}
		}
		return 1;
	}

	int res = 0;
	int sx = -1, sy = -1;
	for(int i = 0; i < y; i++) {
		for(int j = 0; j < x; j++) {
			if(m[i][j] == n) {
				/*
				if(sx != -1 || sy != -1)
					abort();
				// */
				sx = j;
				sy = i;
			}
		}
	}

	for(int i = 0; i < v[n-1].size(); i++) {
		int wi, hi;
		wi = v[n-1][i].first;
		hi = v[n-1][i].second;
		for(int by = 0; by < hi; by++) {
			for(int bx = 0; bx < wi; bx++) {
				if(sy-by >= 0 && sx-bx >= 0 && sy-by + hi <= y && sx-bx + wi <= x) {
					/*
					cout << "hoge:" << n << endl;
					cout << "i:" << i << endl;
					cout << sy-by << "," << sx-bx << endl;
					// */
					bool flg = true;
					for(int j = sy-by; j < sy-by+hi && flg; j++) {
						for(int k = sx-bx; k < sx-bx+wi && flg; k++) {
							if(tab[j][k] != 0 || (m[j][k] != 0 && m[j][k] != n)) {
								flg = false;
							}
						}
					}

					if(flg) {
						//cout << sy << "," << sx << endl;
						for(int j = sy-by; j < sy-by+hi && flg; j++) {
							for(int k = sx-bx; k < sx-bx+wi && flg; k++) {
								tab[j][k] = n;
							}
						}
						int tmp;
						tmp = search(n+1);
						res += tmp;
						for(int j = sy-by; j < sy-by+hi && flg; j++) {
							for(int k = sx-bx; k < sx-bx+wi && flg; k++) {
								tab[j][k] = 0;
							}
						}
					}
				}
			}
		}
	}

	//cout << n << endl;
	return res;
}

int main() {
	while(cin >> x >> y >> N, x || y || N) {
		v.clear();
		v.resize(N);
		for(int i = 0; i < N; i++) {
			int b, k;
			cin >> b >> k;
			for(int j = 1; j <= k; j++) {
				if(k % j == 0 && j <= y && k / j <= x) {
					v[b-1].push_back(pii(j,k/j));
				}
			}
		}

		/*
		for(int i = 0; i < v.size(); i++) {
			for(int j = 0; j < v[i].size(); j++) {
				cout << v[i][j].first << "," << v[i][j].second << endl;
			} cout << endl;
		} cout << endl;
		// */

		for(int i = 0; i < 16; i++) {
			for(int j = 0; j < 16; j++) {
				tab[i][j] = 0;
				m[i][j] = 0;
				ans[i][j] = 0;
			}
		}
		for(int i = 0; i < y; i++) {
			for(int j = 0; j < x; j++) {
				cin >> m[i][j];
			}
		}

		if(search(1) != 1)
			cout << "NA" << endl;
		else {
			for(int i = 0; i < y; i++) {
				cout << ans[i][0];
				for(int j = 1; j < x; j++) {
					cout << " " << ans[i][j];
				}
				cout << endl;
			}
		}
	}
}