import java.*;
import java.io.*;
import java.util.*;
import java.util.ArrayList;
import java.lang.*;
public class Display{

	static char[][] matrix;
	static int size;
	
	public static void main(String args[]) throws Exception{
		
		Scanner in = new Scanner(System.in);
		size = -1;
		try
		{
			while ((size = in.nextInt()) != -1) {
			
				matrix = new char[size][size];
				
				in.nextLine();
				
				for (int i=0; i<size; i++) {
					String riadok = in.nextLine();
					for (int j=0; j<riadok.length(); j++) {
						matrix[i][j] = riadok.charAt(j);
					}
				}
				//in.nextLine();
				String line = in.nextLine();
				for (int k=0; k<line.length(); k++) {
					switch(line.charAt(k)) {
						case '<':
							matrix = doLeft();
							break;
						case '>':
							matrix = doRight();
							break;
						case '-':
							matrix = doVertical();
							break;
						case '|':
							matrix = doHorizontal();
							break;
						case '\\':
							matrix = doMainDiagonal();
							break;
						case '/':
							matrix = doAntiDiagonal();
							break;
						
						default: break;
					}
				}
				for (int m=0; m<size; m++) {
					for (int n=0; n<size; n++) {
						System.out.print(matrix[m][n]);
					}
					System.out.println();
				}
				
			
			}
		}
		catch (Exception e)
		{
		}
			
	}
	
	
	public static char[][] doLeft() {
		
		for (int i=0; i<size; i++){
			for (int j=0; j<size; j++){
				matrix[i][j] = charLeft(matrix[i][j]);
			}
			
		}
		char[][] newMatrix = new char[size][size];
		for (int k = 0; k<size; k++){
			for (int l=0; l<size; l++) {
				newMatrix[k][l] = matrix[l][size-k-1];
			}
		}
		return newMatrix;
	}
	
	public static char[][] doRight() {
		for (int i=0; i<size; i++){
			for (int j=0; j<size; j++){
				matrix[i][j] = charRight(matrix[i][j]);
			}
		}
		char[][] newMatrix = new char[size][size];
		for (int k = 0; k<size; k++){
			for (int l=0; l<size; l++) {
				newMatrix[k][l] = matrix[size-l-1][k];
			}
		}
		return newMatrix;
	}
	
	public static char[][] doVertical() {
		for (int i=0; i<size; i++){
			for (int j=0; j<size; j++){
				matrix[i][j] = charVertical(matrix[i][j]);
			}
		}
		char[][] newMatrix = new char[size][size];
		for (int k = 0; k<size; k++){
			for (int l=0; l<size; l++) {
				newMatrix[k][l] = matrix[size-k-1][l];
			}
		}
		return newMatrix;
	}
	
	public static char[][] doHorizontal() {
		for (int i=0; i<size; i++){
			for (int j=0; j<size; j++){
				matrix[i][j] = charHorizontal(matrix[i][j]);
			}
		}
		char[][] newMatrix = new char[size][size];
		for (int k = 0; k<size; k++){
			for (int l=0; l<size; l++) {
				newMatrix[k][l] = matrix[k][size-l-1];
			}
		}
		return newMatrix;
	}
	
	public static char[][] doMainDiagonal() { //done
		char[][] newMatrix = new char[size][size];
		for (int i=0; i<size; i++){
			for (int j=0; j<size; j++){
				if (i != j) {
					newMatrix[i][j] = matrix[j][i];
					newMatrix[i][j] = charVertical(charLeft(newMatrix[i][j]));
				}
				else {
					newMatrix[i][j] = matrix[i][j];					
					//newMatrix[i][j] = charLeft(newMatrix[i][j]);
				}
			}
		}
		return newMatrix;
	}
	
	public static char[][] doAntiDiagonal() { //done
		char[][] newMatrix = new char[size][size];
		for (int i=0; i<size; i++){
			for (int j=0; j<size; j++){
			
				if (j != ((size - 1) - i)) {
					newMatrix[i][j] = matrix[j][i];
					newMatrix[i][j] = charVertical(charRight(newMatrix[i][j]));
				}
				else {
					newMatrix[i][j] = matrix[i][j];
				}
			}
		}
		return newMatrix;
	}
	
	
	
	public static char charLeft(char c) {
		switch (c) {
			case '<':
				return 'v';
			case '>':
				return '^';
			case '-':
				return '|';
			case '|':
				return '-';
			case '/':
				return '\\';
			case '\\':
				return '/';
			case 'x':
				return 'x';
			case 'o':
				return 'o';
			case '^':
				return '<';
			case 'v':
				return '>';
				
		}
		
		return ' ';
	}
	
	public static char charRight(char c) {
		switch (c) {
			case '<':
				return '^';
			case '>':
				return 'v';
			case '-':
				return '|';
			case '|':
				return '-';
			case '/':
				return '\\';
			case '\\':
				return '/';
			case 'x':
				return 'x';
			case 'o':
				return 'o';
			case '^':
				return '>';
			case 'v':
				return '<';
				
		}		return ' ';
	}
	
	public static char charHorizontal(char c) {
		switch (c) {
			case '<':
				return '>';
			case '>':
				return '<';
			case '-':
				return '-';
			case '|':
				return '|';
			case '/':
				return '\\';
			case '\\':
				return '/';
			case 'x':
				return 'x';
			case 'o':
				return 'o';
			case '^':
				return '^';
			case 'v':
				return 'v';
				
		}		return ' ';
	}
	
	public static char charVertical(char c) {
		switch (c) {
			case '<':
				return '<';
			case '>':
				return '>';
			case '-':
				return '-';
			case '|':
				return '|';
			case '/':
				return '\\';
			case '\\':
				return '/';
			case 'x':
				return 'x';
			case 'o':
				return 'o';
			case '^':
				return 'v';
			case 'v':
				return '^';
				
		}		return ' ';
	}

	
	

	
	

}
