#include int i, j, k, n, clen ; char grid[4][1000][1000], line[1001], text[1000][1001], cipher[1000001] ; int main(void) { while (1) { scanf("%d\n", &n) ; if (n == 0) break ; for (i = 0 ; i < n ; i++) { scanf("%s\n", line) ; for (j = 0 ; j < n ; j++) { if (line[j] == '0') { grid[0][i][j] = 1 ; grid[1][j][n - i - 1] = 1 ; grid[2][n - i - 1][n - j - 1] = 1 ; grid[3][n - j - 1][i] = 1 ; } } } for (i = 0 ; i < n ; i++) { for (j = 0 ; j < n ; j++) { if (grid[0][i][j] == 0) printf("#") ; else printf("0") ; } printf("\n") ; } for (i = 0 ; i < n ; i++) { scanf("%s\n", text[i]) ; } clen = 0 ; for (k = 0 ; k < 4 ; k++) { for (i = 0 ; i < n ; i++) { for (j = 0 ; j < n ; j++) { if (grid[k][i][j] == 1) { cipher[clen++] = text[i][j] ; } } } } printf("%s\n", cipher) ; for (i = 0 ; i < n ; i++) { for (j = 0 ; j < n ; j++) { grid[0][i][j] = grid[1][i][j] = grid[2][i][j] = grid[3][i][j] = 0 ; } } } return 0 ; }