# include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include using namespace std; using LL = long long; using ULL = unsigned long long; constexpr int INF = 2147483647; constexpr int HINF = INF / 2; constexpr double DINF = 100000000000000000.0; constexpr double HDINF = 50000000000000000.0; constexpr long long LINF = 9223372036854775807; constexpr long long HLINF = 4500000000000000000; const double PI = acos(-1); int dx[4] = { 0,1,0,-1 }, dy[4] = { 1,0,-1,0 }; template T_char TL(T_char cX) { return tolower(cX); }; template T_char TU(T_char cX) { return toupper(cX); }; # define ALL(x) (x).begin(),(x).end() # define UNIQ(c) (c).erase(unique(ALL((c))),(c).end()) # define LOWER(s) transform(ALL((s)),(s).begin(),TL) # define UPPER(s) transform(ALL((s)),(s).begin(),TU) # define mp make_pair # define eb emplace_back # define FOR(i,a,b) for(LL i=(a);i<(b);i++) # define RFOR(i,a,b) for(LL i=(a);i>=(b);i--) # define REP(i,n) FOR(i,0,n) # define INIT std::ios::sync_with_stdio(false);std::cin.tie(0) int h, w; int a[1010][1010]; int cnt = 0; void bfs(int sy,int sx,int c) { queue> que; que.push(pair(sx, sy)); a[sy][sx] = c; while (que.size()) { pair p = que.front(); que.pop(); for (int i = 0; i < 4; i++) { int nx = p.first + dx[i], ny = p.second + dy[i]; if (0 <= nx&&nx < w && 0 <= ny&&ny < h &&a[ny][nx] != c) { que.push(pair(nx, ny)); a[ny][nx]=c; cnt++; } } } return; } bool boo = false; int main() { cin >> h >> w; REP(i, h)REP(j, w) { cin >> a[i][j]; } int q; cin >> q; int ans; REP(Q, q) { int r, c, x; cin >> r >> c >> x; r--, c--; if (boo) { ans = x; continue; } if(a[r][c]!=x)bfs(r, c, x); if (cnt >= h + w)boo = true; } REP(i, h) { REP(j, w) { if (j)cout << " "; if(!boo)cout << a[i][j]; else cout << ans; } cout << endl; } //system("pause"); }