#include using namespace std; #define rep(i, a, b) for(int i = a; i < (b); ++i) #define all(x) begin(x), end(x) #define sz(x) (int)(x).size() #define pb push_back typedef long long ll; typedef pair pii; typedef vector vi; int main() { cin.tie(0)->sync_with_stdio(0); int w, h, n; cin >> h >> w >> n; vector grid(h, vector>(w)); queue>> q; for(int i = 1; i <= n; i++) { int r, c; cin >> r >> c; r--; c--; q.push({i, {r, c}}); } while(!q.empty()) { auto [curr, pos] = q.front(); q.pop(); auto [r, c] = pos; if(sz(grid[r][c]) >= 2 || find(all(grid[r][c]), curr) != grid[r][c].end()) continue; grid[r][c].push_back(curr); if(r-1 >= 0) q.push({curr, {r-1, c}}); if(c-1 >= 0) q.push({curr, {r, c-1}}); if(r+1 < h) q.push({curr, {r+1, c}}); if(c+1 < w) q.push({curr, {r, c+1}}); } for(int r = 0; r < h; r++) { for(int c = 0; c < w; c++) { cout << grid[r][c][0] << " "; } cout << "\n"; } cout << "\n"; for(int r = 0; r < h; r++) { for(int c = 0; c < w; c++) { cout << grid[r][c][1] << " "; } cout << "\n"; } cout << "\n"; }