#include #include #include #include #include #include #include #include #include #include using namespace std; #define FI first #define SE second #define X first #define Y second #define ST first #define ND second #define MP make_pair #define PB push_back typedef vector VI; typedef pair PII; typedef long long LL; typedef long double LD; typedef double D; #define REP(i,n) for(int i=0;i<(n);i++) #define FOR(i,a,b) for(int i=(a);i<=(b);i++) #define FORD(i,a,b) for(int i=(a);i>=(b);i--) #define FORE(a,b) for(VAR(a,(b).begin());a!=(b).end();a++) #define VAR(a,b) __typeof(b) a=(b) #define SIZE(a) ((int)(a).size()) #define ALL(x) (x).begin(),(x).end() #define CLR(x,a) memset(x,a,sizeof(x)) const int M = 1013; char g[M][M], s[M][M], b[M][M]; int main() { int n; while(scanf("%d",&n)==1 && n) { REP(i, n) scanf("%s", g[i]); REP(i, n) scanf("%s", s[i]); string ret; REP(ii, 4) { REP(i, n) REP(j, n) if(g[i][j] == 'O') ret += s[i][j]; REP(i, n) REP(j, n) b[j][n-1-i] = g[i][j]; REP(i, n) REP(j, n) g[i][j] = b[i][j]; } puts(ret.c_str()); } return 0; }