#include char map[126][126]; void init() { map[60][60] = 'v'; map[60][62] = '^'; map[60][45] = '<'; map[60][124] = '>'; map[60][92] = '^'; map[60][47] = 'v'; map[118][60] = '>'; map[118][62] = '<'; map[118][45] = '^'; map[118][124] = 'v'; map[118][92] = '>'; map[118][47] = '<'; map[62][60] = '^'; map[62][62] = 'v'; map[62][45] = '>'; map[62][124] = '<'; map[62][92] = 'v'; map[62][47] = '^'; map[94][60] = '<'; map[94][62] = '>'; map[94][45] = 'v'; map[94][124] = '^'; map[94][92] = '<'; map[94][47] = '>'; map[45][60] = '|'; map[45][62] = '|'; map[45][45] = '-'; map[45][124] = '-'; map[45][92] = '|'; map[45][47] = '|'; map[124][60] = '-'; map[124][62] = '-'; map[124][45] = '|'; map[124][124] = '|'; map[124][92] = '-'; map[124][47] = '-'; map[47][60] = '\\'; map[47][62] = '\\'; map[47][45] = '\\'; map[47][124] = '\\'; map[47][92] = '/'; map[47][47] = '/'; map[92][60] = '/'; map[92][62] = '/'; map[92][45] = '/'; map[92][124] = '/'; map[92][92] = '\\'; map[92][47] = '\\'; map[111][60] = 'o'; map[111][62] = 'o'; map[111][45] = 'o'; map[111][124] = 'o'; map[111][92] = 'o'; map[111][47] = 'o'; map[120][60] = 'x'; map[120][62] = 'x'; map[120][45] = 'x'; map[120][124] = 'x'; map[120][92] = 'x'; map[120][47] = 'x'; } int main(void){ int i, j, n; char a; // action to do char pole[102][102]; char pom[102][102]; int r_left, r_right, f_hor, f_ver, f_d1, f_d2, p; init(); while (scanf(" %d", &n) == 1) { getchar(); // consumes '\n' // init pocet r_left = 0; r_right = 0; f_hor = 0; f_ver = 0; f_d1 = 0; f_d2 = 0; for (i = 0; i < n; i++) { // n lines of input for (j = 0; j < n; j++) { // n columns of input pole[i][j] = getchar(); } getchar(); // skips '\n' } while (true) { a = getchar(); if (a == '\n') break; // no operations if (a == '|') { f_ver = !f_ver; p = r_right; r_right = r_left; r_left = p; p = f_d1; f_d1 = f_d2; f_d2 = p; } else if (a == '-') { f_hor = !f_hor; p = r_right; r_right = r_left; r_left = p; p = f_d1; f_d1 = f_d2; f_d2 = p; } else if (a == '<') { if (r_right) r_right--; else { r_left = ((r_left+1) % 4); if (r_left == 3) { r_left = 0; r_right = 1; } } } else if (a == '>') { if (r_left) r_left--; else { r_right = ((r_right+1) % 4); if (r_right == 3) { r_right = 0; r_left = 1; } } } else if (a == '\\') { f_d1 = !f_d1; p = r_right; r_right = r_left; r_left = p; p = f_ver; f_ver = f_hor; f_hor = p; } else if (a == '/') { f_d2 = !f_d2; p = r_right; r_right = r_left; r_left = p; p = f_ver; f_ver = f_hor; f_hor = p; } if (getchar() == '\n') break; // skips space or \n } //printf("%d %d %d %d %d %d\n", r_left, r_right, f_hor, f_ver, f_d1, f_d2); if (f_hor) { for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { pom[n-i-1][j] = map[(int)pole[i][j]][45]; } } for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { pole[i][j] = pom[i][j]; } } } if (f_ver) { for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { pom[i][n-j-1] = map[(int)pole[i][j]][124]; } } for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { pole[i][j] = pom[i][j]; } } } if (f_d1) { for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { pom[j][i] = map[(int)pole[i][j]][92]; } } for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { pole[i][j] = pom[i][j]; } } } if (f_d2) { for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { pom[n-j-1][n-i-1] = map[(int)pole[i][j]][47]; } } for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { pole[i][j] = pom[i][j]; } } } if (r_left) { for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { pom[n-j-1][i] = map[(int)pole[i][j]][60]; } } for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { pole[i][j] = pom[i][j]; } } } if (r_right) { for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { pom[j][n-i-1] = map[(int)pole[i][j]][62]; } } for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { pole[i][j] = pom[i][j]; } } } /*for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { if (a == '|') pom[i][n-j-1] = map[(int)pole[i][j]][124]; else if (a == '-') pom[n-i-1][j] = map[(int)pole[i][j]][45]; else if (a == '<') pom[n-j-1][i] = map[(int)pole[i][j]][60]; else if (a == '>') pom[j][n-i-1] = map[(int)pole[i][j]][62]; else if (a == '\\') pom[j][i] = map[(int)pole[i][j]][92]; else if (a == '/') pom[n-j-1][n-i-1] = map[(int)pole[i][j]][47]; } } for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { pole[i][j] = pom[i][j]; } } if (getchar() == '\n') break; // skips space or \n */ for (i = 0; i < n; i++) { for (j = 0; j < n; j++) putchar(pole[i][j]); putchar('\n'); } } return 0; }