#include #include #include #include #include #include #include #include #include #include #include #define FORE(it, c) for(__typeof((c).begin()) it = (c).begin(); it != (c).end(); ++it) #define FC(aa, bb) FORE(bb, aa) #define debug(x) cerr << #x << " = " << x << endl; #define debugv(x) cerr << #x << " = " ; FORE(it, (x)) cerr << *it << ", "; cerr << endl; #define fup(i, a, b) for(int i = (a); i <= (b); ++i) #define fdo(i, a, b) for(int i = (a); i >= (b); --i) #define FOR fup #define FORD fdo #define REP(i, n) for(int i = 0; i < (n); ++i) #define ALL(x) (x).begin(), (x).end() #define CLR(x) memset((x), 0, sizeof(x)) #define MP make_pair #define PB push_back #define siz(a) ((int)(a).size()) #define SZ siz #define inf 1000000000 #define FI first #define SE second using namespace std; typedef long long lli; typedef double ld; typedef lli LL; typedef ld LD; typedef vector VI; typedef pair PII; int n; #define maxn 1005 bool g[maxn][maxn]; char t[maxn][maxn]; bool gp[maxn][maxn]; void rotate() { fup(i, 1, n) fup(j, 1, n) { gp[j][n - i + 1] = g[i][j]; } fup(i, 1, n) fup(j, 1, n) g[i][j] = gp[i][j]; } char o[maxn]; void wypisz() { fup(i, 1, n) fup(j, 1, n) { if (g[i][j] == 0) putchar(t[i][j]); } } int main() { while (scanf("%d", &n)) { if (n == 0) break; fup(i, 1, n) { scanf("%s", o + 1); fup(j, 1, n) if (o[j] == '#') g[i][j] = 1; else g[i][j] = 0; } fup(i, 1, n) { scanf("%s", t[i] + 1); } wypisz(); rotate(); wypisz(); rotate(); wypisz(); rotate(); wypisz(); printf("\n"); } return 0; }