// posted as http://c...content-available-to-author-only...e.com/a/23442/16293
import java.util.*;class S
{public static void main
(String[]a
){new S
();}int a
;int[][]f
;List
<L
>l
;Stack
<Integer
>b
;S
(){Scanner s
=new Scanner
(System.
in);a
=s.
nextInt();f
=new int[a
][a
];for(int[]x
:f
)Arrays.
fill(x,
95);s.
next(";");b
=new Stack();for(int i
=1;s.
hasNextInt();i
++){b.
addAll(Collections.
nCopies(s.
nextInt(),i
));}s.
next(";");while(s.
findInLine("([A-Z])")!=null)f
[s.
match().
group(1).
charAt(0)-65][s.
nextInt()-1]=79;l
=new ArrayList();for(int i
=0;i
<a
;i
++){l.
add(new L
(i
){int g
(int c
){return g
(c,i
);}void s
(int c,
int v
){f
[c
][i
]=v
;}});l.
add(new L
(i
){int g
(int r
){return g
(i,r
);}void s
(int r,
int v
){f
[i
][r
]=v
;}});}if(s
()){String o
="";for(int r
=0;r
<a
;r
++){for(int c
=0;c
<a
;c
++)o
+=(char)f
[c
][r
];o
+='\n';}System.
out.
print(o
);}}boolean s
(){if(b.
empty())return true;int s
=b.
pop();Integer n
=95;for(L c
:l
){int f
=0;for(int x
=0;x
<a
;x
++){if(n.
equals(c.
g(x
)))f
++;else f
=0;if(f
>=s
){for(int i
=0;i
<s
;i
++)c.
s(x
-i,
35);if(s
())return true;for(int i
=0;i
<s
;i
++)c.
s(x
-i,n
);}}}b.
push(s
);return false;}class L
{int i
;L
(int v
){i
=v
;}void s
(int i,
int v
){}int g
(int i
){return 0;}int g
(int c,
int r
){int v
=0;for(int x
=-1;x
<2;x
++)for(int y
=-1;y
<2;y
++)try{v
|=f
[c
+x
][r
+y
];}catch(Exception e
){}return v
&(f
[c
][r
]|32);}}}
Ly8gcG9zdGVkIGFzIGh0dHA6Ly9jLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5lLmNvbS9hLzIzNDQyLzE2MjkzCmltcG9ydCBqYXZhLnV0aWwuKjtjbGFzcyBTe3B1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdYSl7bmV3IFMoKTt9aW50IGE7aW50W11bXWY7TGlzdDxMPmw7U3RhY2s8SW50ZWdlcj5iO1MoKXtTY2FubmVyIHM9bmV3IFNjYW5uZXIoU3lzdGVtLmluKTthPXMubmV4dEludCgpO2Y9bmV3IGludFthXVthXTtmb3IoaW50W114OmYpQXJyYXlzLmZpbGwoeCw5NSk7cy5uZXh0KCI7Iik7Yj1uZXcgU3RhY2soKTtmb3IoaW50IGk9MTtzLmhhc05leHRJbnQoKTtpKyspe2IuYWRkQWxsKENvbGxlY3Rpb25zLm5Db3BpZXMocy5uZXh0SW50KCksaSkpO31zLm5leHQoIjsiKTt3aGlsZShzLmZpbmRJbkxpbmUoIihbQS1aXSkiKSE9bnVsbClmW3MubWF0Y2goKS5ncm91cCgxKS5jaGFyQXQoMCktNjVdW3MubmV4dEludCgpLTFdPTc5O2w9bmV3IEFycmF5TGlzdCgpO2ZvcihpbnQgaT0wO2k8YTtpKyspe2wuYWRkKG5ldyBMKGkpe2ludCBnKGludCBjKXtyZXR1cm4gZyhjLGkpO312b2lkIHMoaW50IGMsaW50IHYpe2ZbY11baV09djt9fSk7bC5hZGQobmV3IEwoaSl7aW50IGcoaW50IHIpe3JldHVybiBnKGkscik7fXZvaWQgcyhpbnQgcixpbnQgdil7ZltpXVtyXT12O319KTt9aWYocygpKXtTdHJpbmcgbz0iIjtmb3IoaW50IHI9MDtyPGE7cisrKXtmb3IoaW50IGM9MDtjPGE7YysrKW8rPShjaGFyKWZbY11bcl07bys9J1xuJzt9U3lzdGVtLm91dC5wcmludChvKTt9fWJvb2xlYW4gcygpe2lmKGIuZW1wdHkoKSlyZXR1cm4gdHJ1ZTtpbnQgcz1iLnBvcCgpO0ludGVnZXIgbj05NTtmb3IoTCBjOmwpe2ludCBmPTA7Zm9yKGludCB4PTA7eDxhO3grKyl7aWYobi5lcXVhbHMoYy5nKHgpKSlmKys7ZWxzZSBmPTA7aWYoZj49cyl7Zm9yKGludCBpPTA7aTxzO2krKyljLnMoeC1pLDM1KTtpZihzKCkpcmV0dXJuIHRydWU7Zm9yKGludCBpPTA7aTxzO2krKyljLnMoeC1pLG4pO319fWIucHVzaChzKTtyZXR1cm4gZmFsc2U7fWNsYXNzIEx7aW50IGk7TChpbnQgdil7aT12O312b2lkIHMoaW50IGksaW50IHYpe31pbnQgZyhpbnQgaSl7cmV0dXJuIDA7fWludCBnKGludCBjLGludCByKXtpbnQgdj0wO2ZvcihpbnQgeD0tMTt4PDI7eCsrKWZvcihpbnQgeT0tMTt5PDI7eSsrKXRyeXt2fD1mW2MreF1bcit5XTt9Y2F0Y2goRXhjZXB0aW9uIGUpe31yZXR1cm4gdiYoZltjXVtyXXwzMik7fX19