#include <bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int B,D;
if(!(cin>>B>>D)) return 0;
vector<string> shape(D);
for(int j=0;j<D;j++) cin>>shape[j];
int W,H; cin>>W>>H;
vector<string> park(H);
for(int y=0;y<H;y++) cin>>park[y];
vector<pair<int,int>> cells;
for(int j=0;j<D;j++) for(int i=0;i<B;i++) if(shape[j][i]=='O') cells.push_back({i,j});
if(cells.empty()){
for(int y=0;y<H;y++) cout<<park[y]<<"\n";
return 0;
}
vector<pair<int,int>> cand;
cand.reserve((long long)W*H);
for(int y=0;y+ D<=H;y++) for(int x=0;x+ B<=W;x++) cand.push_back({x,y});
auto feasiblePositions = [&](const vector<string>& g, int x, int y)->bool{
for(auto [dx,dy]:cells){
int gx=x+dx, gy=y+dy;
if(g[gy][gx]!='.') return false;
static int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
for(auto &d:dir){
int nx=gx+d[0], ny=gy+d[1];
if(0<=nx && nx<W && 0<=ny && ny<H){
if(g[ny][nx]=='O') return false;
}
}
}
return true;
};
auto place = [&](vector<string>& g, int x, int y){
for(auto [dx,dy]:cells){
int gx=x+dx, gy=y+dy;
g[gy][gx]='O';
}
};
vector<string> best=park, cur;
int bestCnt=-1;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
vector<pair<int,int>> order=cand;
int loops=500;
for(int iter=0;iter<loops;iter++){
cur=park;
shuffle(order.begin(), order.end(), rng);
int placed=0;
for(auto [x,y]:order){
if(feasiblePositions(cur,x,y)){
place(cur,x,y);
placed++;
}
}
if(placed>bestCnt){
bestCnt=placed;
best=cur;
}
}
for(int y=0;y<H;y++) cout<<best[y]<<"\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKICAgIGludCBCLEQ7IAogICAgaWYoIShjaW4+PkI+PkQpKSByZXR1cm4gMDsKICAgIHZlY3RvcjxzdHJpbmc+IHNoYXBlKEQpOwogICAgZm9yKGludCBqPTA7ajxEO2orKykgY2luPj5zaGFwZVtqXTsKICAgIGludCBXLEg7IGNpbj4+Vz4+SDsKICAgIHZlY3RvcjxzdHJpbmc+IHBhcmsoSCk7CiAgICBmb3IoaW50IHk9MDt5PEg7eSsrKSBjaW4+PnBhcmtbeV07CgogICAgdmVjdG9yPHBhaXI8aW50LGludD4+IGNlbGxzOwogICAgZm9yKGludCBqPTA7ajxEO2orKykgZm9yKGludCBpPTA7aTxCO2krKykgaWYoc2hhcGVbal1baV09PSdPJykgY2VsbHMucHVzaF9iYWNrKHtpLGp9KTsKICAgIGlmKGNlbGxzLmVtcHR5KCkpewogICAgICAgIGZvcihpbnQgeT0wO3k8SDt5KyspIGNvdXQ8PHBhcmtbeV08PCJcbiI7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgdmVjdG9yPHBhaXI8aW50LGludD4+IGNhbmQ7CiAgICBjYW5kLnJlc2VydmUoKGxvbmcgbG9uZylXKkgpOwogICAgZm9yKGludCB5PTA7eSsgRDw9SDt5KyspIGZvcihpbnQgeD0wO3grIEI8PVc7eCsrKSBjYW5kLnB1c2hfYmFjayh7eCx5fSk7CgogICAgYXV0byBmZWFzaWJsZVBvc2l0aW9ucyA9IFsmXShjb25zdCB2ZWN0b3I8c3RyaW5nPiYgZywgaW50IHgsIGludCB5KS0+Ym9vbHsKICAgICAgICBmb3IoYXV0byBbZHgsZHldOmNlbGxzKXsKICAgICAgICAgICAgaW50IGd4PXgrZHgsIGd5PXkrZHk7CiAgICAgICAgICAgIGlmKGdbZ3ldW2d4XSE9Jy4nKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIHN0YXRpYyBpbnQgZGlyWzRdWzJdPXt7MSwwfSx7LTEsMH0sezAsMX0sezAsLTF9fTsKICAgICAgICAgICAgZm9yKGF1dG8gJmQ6ZGlyKXsKICAgICAgICAgICAgICAgIGludCBueD1neCtkWzBdLCBueT1neStkWzFdOwogICAgICAgICAgICAgICAgaWYoMDw9bnggJiYgbng8VyAmJiAwPD1ueSAmJiBueTxIKXsKICAgICAgICAgICAgICAgICAgICBpZihnW255XVtueF09PSdPJykgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlOwogICAgfTsKCiAgICBhdXRvIHBsYWNlID0gWyZdKHZlY3RvcjxzdHJpbmc+JiBnLCBpbnQgeCwgaW50IHkpewogICAgICAgIGZvcihhdXRvIFtkeCxkeV06Y2VsbHMpewogICAgICAgICAgICBpbnQgZ3g9eCtkeCwgZ3k9eStkeTsKICAgICAgICAgICAgZ1tneV1bZ3hdPSdPJzsKICAgICAgICB9CiAgICB9OwoKICAgIHZlY3RvcjxzdHJpbmc+IGJlc3Q9cGFyaywgY3VyOwogICAgaW50IGJlc3RDbnQ9LTE7CgogICAgbXQxOTkzN182NCBybmcoY2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKS5jb3VudCgpKTsKICAgIHZlY3RvcjxwYWlyPGludCxpbnQ+PiBvcmRlcj1jYW5kOwoKICAgIGludCBsb29wcz01MDA7CiAgICBmb3IoaW50IGl0ZXI9MDtpdGVyPGxvb3BzO2l0ZXIrKyl7CiAgICAgICAgY3VyPXBhcms7CiAgICAgICAgc2h1ZmZsZShvcmRlci5iZWdpbigpLCBvcmRlci5lbmQoKSwgcm5nKTsKICAgICAgICBpbnQgcGxhY2VkPTA7CiAgICAgICAgZm9yKGF1dG8gW3gseV06b3JkZXIpewogICAgICAgICAgICBpZihmZWFzaWJsZVBvc2l0aW9ucyhjdXIseCx5KSl7CiAgICAgICAgICAgICAgICBwbGFjZShjdXIseCx5KTsKICAgICAgICAgICAgICAgIHBsYWNlZCsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKHBsYWNlZD5iZXN0Q250KXsKICAgICAgICAgICAgYmVzdENudD1wbGFjZWQ7CiAgICAgICAgICAgIGJlc3Q9Y3VyOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IoaW50IHk9MDt5PEg7eSsrKSBjb3V0PDxiZXN0W3ldPDwiXG4iOwogICAgcmV0dXJuIDA7Cn0=