#include using namespace std; using ll = long long; int main(){ ios::sync_with_stdio(false); cin.tie(0); ios::sync_with_stdio(false); cin.tie(0); int h, w; cin >> h >> w; vector A(h), B(w, string(h, '?')); vector> ans; for(int y = 0; y < h; y++){ auto &&ss = A[y]; cin >> ss; for(int i = 0; i < w; ){ int p = i; while(i < w && ss[i] == ss[p]) i++; if(ss[p] == '#') continue; if(i - p >= 2) ans.emplace_back(y, p); } } for(int y = 0; y < h; y++){ for(int x = 0; x < w; x++){ B[x][y] = A[y][x]; } } for(int x = 0; x < w; x++){ auto &&ss = B[x]; for(int i = 0; i < h; ){ int p = i; while(i < h && ss[i] == ss[p]) i++; if(ss[p] == '#') continue; if(i - p >= 2) ans.emplace_back(p, x); } } sort(ans.begin(), ans.end()); ans.erase(unique(ans.begin(), ans.end()), ans.end()); auto add_w = [&](int y, int x, string s){ // if(s == "-") return (x + 1 < w && A[y][x + 1] == '.' ? false : true); int sz = s.size(); for(int dx = 0; dx < sz; dx++){ if(x + dx >= w) return false; if(A[y][x + dx] == '#') return false; if(A[y][x + dx] == '.'){ A[y][x + dx] = s[dx]; }else{ if(A[y][x + dx] != s[dx]) return false; } } if(x + sz < w && A[y][x + sz] != '#') return false; return true; }; auto add_h = [&](int y, int x, string s){ // if(s == "-") return (y + 1 < h && A[y + 1][x] == '.' ? false : true); int sz = s.size(); for(int dy = 0; dy < sz; dy++){ if(y + dy >= h) return false; if(A[y + dy][x] == '#') return false; if(A[y + dy][x] == '.'){ A[y + dy][x] = s[dy]; }else{ if(A[y + dy][x] != s[dy]) return false; } } if(y + sz < h && A[y + sz][x] != '#') return false; return true; }; int k; cin >> k; for(int i = 0; i < k; i++){ int p, d; string s; cin >> p >> d >> s; auto [y, x] = ans[p - 1]; if(d == 0) add_w(y, x, s); else add_h(y, x, s); for(auto &&ss : A) cout << ss << '\n'; } }