#include #include char Grid[2000][2000]; char Text[2000][2000]; int Read[2000][2000]; void Rotate(int& x, int& y, int n) { int a = x; int b = y; x = (n - 1) - b; y = a; } int main() { int t = 1; while(1) { int n; scanf("%d", &n); if(!(n)) { break; } getchar(); for(int y = 0; y < n; y++) { for(int x = 0; x < n; x++) { Grid[x][y] = getchar(); } getchar(); } /*for(int y = 0; y < n; y++) { for(int x = 0; x < n; x++) { putchar(Grid[x][y]); } putchar('\n'); }*/ for(int y = 0; y < n; y++) { for(int x = 0; x < n; x++) { Text[x][y] = getchar(); } getchar(); } /*for(int y = 0; y < n; y++) { for(int x = 0; x < n; x++) { putchar(Text[x][y]); } putchar('\n'); }*/ for(int r = 0; r < 4; r++) { for(int x = 0; x < n; x++) { for(int y = 0; y < n; y++) { if(Grid[x][y] == 'O') { int xx = x, yy = y; for(int i = 0; i < r; i++) { Rotate(xx, yy, n); } Read[xx][yy] = t; } } } for(int y = 0; y < n; y++) { for(int x = 0; x < n; x++) { if(Read[x][y] == t) { putchar(Text[x][y]); } } } t++; } putchar('\n'); } return 0; }