#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>
using namespace std;
string a[101];
int c[101][101], R, C, N;
int dy[4]={0,0,1,-1}, dx[4]={1,-1,0,0};
vector<pair<int,int>> group;
void dfs(int y, int x){
if (a[y][x] == '.') return;
if (c[y][x]) return;
c[y][x] = true;
group.push_back(make_pair(y,x));
for(int k=0; k<4; k++){
int ny = y+dy[k];
int nx = x+dx[k];
if(0 <= ny && ny < R && 0 <= nx && nx < C) dfs(ny,nx);
}
}
void simulate(){
memset(c, false, sizeof(c));
for(int y=0; y<R; y++){
for (int x=0; x<C; x++){
if (a[y][x] == '.') continue;
if (c[y][x]) continue;
group.clear();
dfs(y,x);
vector<int> low(C, -1);
for(auto &p : group){
low[p.second] = max(low[p.second], p.first);
a[p.first][p.second] = '.';
}
int lowest = R;
for(int i, j=0; j<C; j++){
if (low[j] == -1) continue;
for(i=low[j]; i<R && a[i][j]=='.'; i++);
lowest = min(lowest, i-low[j]-1);
}
for(auto &p : group){
p.first += lowest;
a[p.first][p.second] = 'x';
c[p.first][p.second] = true;
}
}
}
}
int main(){
cin >> R >> C;
for (int i=0; i<R; i++) cin >> a[i];
cin >> N;
for(int i=0; i<N; i++){
int h;
cin >> h;
h = R - h;
if(i%2 == 0){
for(int j=0; j<C; j++){
if(a[h][j] == 'x'){
a[h][j] = '.';
break;
}
}
}
else{
for(int j=C-1; j>=0; j--){
if(a[h][j] == 'x'){
a[h][j] = '.';
break;
}
}
}
simulate();
}
for(int i=0; i<R; i++){
cout << a[i] << '\n';
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cmluZyBhWzEwMV07CmludCBjWzEwMV1bMTAxXSwgUiwgQywgTjsKaW50IGR5WzRdPXswLDAsMSwtMX0sIGR4WzRdPXsxLC0xLDAsMH07CnZlY3RvcjxwYWlyPGludCxpbnQ+PiBncm91cDsKCnZvaWQgZGZzKGludCB5LCBpbnQgeCl7CglpZiAoYVt5XVt4XSA9PSAnLicpIHJldHVybjsKCWlmIChjW3ldW3hdKSByZXR1cm47CgljW3ldW3hdID0gdHJ1ZTsKCWdyb3VwLnB1c2hfYmFjayhtYWtlX3BhaXIoeSx4KSk7Cglmb3IoaW50IGs9MDsgazw0OyBrKyspewoJCWludCBueSA9IHkrZHlba107CgkJaW50IG54ID0geCtkeFtrXTsKCQlpZigwIDw9IG55ICYmIG55IDwgUiAmJiAwIDw9IG54ICYmIG54IDwgQykgZGZzKG55LG54KTsKCX0KfQoKdm9pZCBzaW11bGF0ZSgpewoJbWVtc2V0KGMsIGZhbHNlLCBzaXplb2YoYykpOwoJZm9yKGludCB5PTA7IHk8UjsgeSsrKXsKCQlmb3IgKGludCB4PTA7IHg8QzsgeCsrKXsKCQkJaWYgKGFbeV1beF0gPT0gJy4nKSBjb250aW51ZTsKCQkJaWYgKGNbeV1beF0pIGNvbnRpbnVlOwoJCQlncm91cC5jbGVhcigpOwoJCQlkZnMoeSx4KTsKCQkJdmVjdG9yPGludD4gbG93KEMsIC0xKTsKCQkJZm9yKGF1dG8gJnAgOiBncm91cCl7CgkJCQlsb3dbcC5zZWNvbmRdID0gbWF4KGxvd1twLnNlY29uZF0sIHAuZmlyc3QpOwoJCQkJYVtwLmZpcnN0XVtwLnNlY29uZF0gPSAnLic7CgkJCX0KCQkJaW50IGxvd2VzdCA9IFI7CgkJCWZvcihpbnQgaSwgaj0wOyBqPEM7IGorKyl7CgkJCQlpZiAobG93W2pdID09IC0xKSBjb250aW51ZTsKCQkJCWZvcihpPWxvd1tqXTsgaTxSICYmIGFbaV1bal09PScuJzsgaSsrKTsKCQkJCWxvd2VzdCA9IG1pbihsb3dlc3QsIGktbG93W2pdLTEpOwoJCQl9CgkJCWZvcihhdXRvICZwIDogZ3JvdXApewoJCQkJcC5maXJzdCArPSBsb3dlc3Q7CgkJCQlhW3AuZmlyc3RdW3Auc2Vjb25kXSA9ICd4JzsKCQkJCWNbcC5maXJzdF1bcC5zZWNvbmRdID0gdHJ1ZTsKCQkJfQoJCX0KCX0KfQoKaW50IG1haW4oKXsKCWNpbiA+PiBSID4+IEM7Cglmb3IgKGludCBpPTA7IGk8UjsgaSsrKSBjaW4gPj4gYVtpXTsKCWNpbiA+PiBOOwoJCglmb3IoaW50IGk9MDsgaTxOOyBpKyspewoJCWludCBoOwoJCWNpbiA+PiBoOwoJCWggPSBSIC0gaDsKCQlpZihpJTIgPT0gMCl7CgkJCWZvcihpbnQgaj0wOyBqPEM7IGorKyl7CgkJCQlpZihhW2hdW2pdID09ICd4Jyl7CgkJCQkJYVtoXVtqXSA9ICcuJzsKCQkJCQlicmVhazsKCQkJCX0KCQkJfQoJCX0KCQllbHNlewoJCQlmb3IoaW50IGo9Qy0xOyBqPj0wOyBqLS0pewoJCQkJaWYoYVtoXVtqXSA9PSAneCcpewoJCQkJCWFbaF1bal0gPSAnLic7CgkJCQkJYnJlYWs7CgkJCQl9CgkJCX0KCQl9CgkJc2ltdWxhdGUoKTsKCX0KCQoJZm9yKGludCBpPTA7IGk8UjsgaSsrKXsKCQljb3V0IDw8IGFbaV0gPDwgJ1xuJzsKCX0KCXJldHVybiAwOwp9