import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;



public class Main{

	public static void main(String[] args) throws IOException {
		// TODO ?????????????????????????????????????????????


		BufferedReader insBR =  new BufferedReader(new InputStreamReader(System.in));

		//????????????????????°?????????
		String strNum = insBR.readLine();
		int setNum = Integer.parseInt(strNum);

		//?????£?????????????????????????????????????´?????????????
		Field[] aryIns = new Field[setNum];

		//???????????????????????°??????
		for(int deta = 0; deta < setNum; deta++){
			//?????£??????????????§???????????????
			String[] area = insBR.readLine().split(" ");
			int intHeight= Integer.parseInt(area[0]);
			int intWidth = Integer.parseInt(area[1]);

			//?????£??????????????±?????????????????????
			String[][] field = new String[intHeight][intWidth];

			//?????£?????????????????±???????´?
			for(int j = 0; j < intHeight; j++){
				//?????£??????????????±?????????
				String[] fieldLine = insBR.readLine().split("");

				for(int i = 0; i < intWidth; i++){

					field[j][i] = fieldLine[i+1];

				}
			}


			//????????\??????????????°?????????
			int intTimes = Integer.parseInt(insBR.readLine());

			//???????????±????????????????????????????´?
			String[] commond = insBR.readLine().split("");

			//field????????????????????????(?????°????????£??????????????±??¨?????????????????????)
			Field insField = new Field(field,commond);

			//????????????????????????
			insField.chageField();

			//?????????????????????????????????????´?
			aryIns[deta] = insField;

		}

		//?????£??????????????????
		for(int k = 0; k < aryIns.length; k++){

			Field insField = aryIns[k];
			//????????????????????????????????????????????¨????????????
			int intHeight = insField.field.length;
			int intWidth = insField.field[0].length;

			for(int j = 0; j < intHeight; j++){

				for(int i = 0; i < intWidth; i++){

					System.out.print(insField.field[j][i]);
				}
				System.out.println();
			}
			if(k != aryIns.length -1){
				System.out.println();
			}
		}



	}//Main??????????????????


	/**
	 * ?????£??????????????????*/
	static class Field{

		/**?????£?????????
		 * ????????£??????????????±?????????????????????*/
		private String[][] field;
		/**
		 * ????????????????????????????????????*/
		private String[] commond;
		/**
		 * ?????£????????????????????¨???????????????????????°*/
		private int intHeight;
		private int intWidth;



		/**
		 * ?????????????????????*/
		Field(String[][] field, String[] commond){

			this.field = field;
			this.commond = commond;
			this.intHeight = field.length;
			this.intWidth = field[0].length;
		}



		/**Method
		 *????????£??????????????±???????????????????????????????????????????????´??????
		 **/
		public void chageField(){

			//?????????????????°?????°?????????
			for(int comNum = 0; comNum < commond.length; comNum++){

				//??????????????±??¨???????????????
				int[] tank = getTank();
				int j = tank[0];
				int i = tank[1];
				int tankHead = tank[2]; //1=^ 2=> 3=v 4=<

				//???????????????(????¨????)
				if("S".equals(commond[comNum])){

					//??????????¬??????¨?????¢???????????????????????°
					String nextArea = "";

					//????????????????????????(?????????)
					if(tankHead == 1){// ^??????

						//?¬??????¨?????¢???????????¬?????¬??§???????????°?????¨?????¢????????????
						for(int k = j-1; 0 <= k; k--){

							nextArea = field[k][i];

							if("#".equals(nextArea)){
								//????????´??????????????????????????¬??????
								break;
							}else if("*".equals(nextArea)){
								//??¬?????¬?????´???????????°?????????
								field[k][i] = ".";
								break;
							}
						}
					}else if(tankHead == 2){// >??????

						//?¬??????¨?????¢???????????¬?????¬??§???????????°?????¨?????¢????????????
						for(int k = i+1; k <= intWidth -1; k++){
						nextArea = field[j][k];

							if("#".equals(nextArea)){
								//????????´??????????????????????????¬??????
								break;
							}else if("*".equals(nextArea)){
								//??¬?????¬?????´???????????°?????????
								field[j][k] = ".";
								break;
							}
						}

					}else if(tankHead == 3){// v??????

						//?¬??????¨?????¢???????????¬?????¬??§???????????°?????¨?????¢????????????
						for(int k = j+1; k <= intHeight -1; k++){
							nextArea = field[k][i];

							if("#".equals(nextArea)){
								//????????´??????????????????????????¬??????
								break;
							}else if("*".equals(nextArea)){
								//??¬?????¬?????´???????????°?????????
								field[k][i] = ".";
								break;
							}
						}

					}else if(tankHead == 4){// <??????

						//?¬??????¨?????¢???????????¬?????¬??§???????????°?????¨?????¢????????????
						for(int k = i-1; 0 <= k; k--){
							nextArea = field[j][k];

							if("#".equals(nextArea)){
								//????????´??????????????????????????¬??????
								break;
							}else if("*".equals(nextArea)){
								//??¬?????¬?????´???????????°?????????
								field[j][k] = ".";
								break;
							}
						}

					}//commond"S"end


				}else if("U".equals(commond[comNum])){


					//nextArea = field[j-1][i];
					if(j == 0 || !".".equals(field[j-1][i])){
						//?????????????????????????????´????????????????¬??????¨?????¢????????°??§?????????????????????????????´
						field[j][i] = "^";
					}else if(".".equals(field[j-1][i])) {
						//?¬??????¨?????¢???????????´?????????????????°?????´???

						field[j-1][i] = "^";//??????????????????
						field[j][i] = ".";//????????¨?????¢????????°?????????
					}//commond"U"end

				}else if("R".equals(commond[comNum])){

					//nextArea = field[j][i+1];
					if(i == intWidth - 1 || !".".equals(field[j][i+1])){
						//?????????????????????????????´???????????????????????´
						field[j][i] = ">";
					}else if(".".equals(field[j][i+1])){
						//?¬??????¨?????¢???????????´???????????°?????´???
						field[j][i+1] = ">";//??????????????????
						field[j][i] = ".";//????????¨?????¢????????°?????????
					}//commond"R"end


				}else if("D".equals(commond[comNum])){


					if(j == intHeight - 1 || !".".equals(field[j+1][i])){
						//?????????????????????????????´???????????????????????´
						field[j][i] = "v";
						}else if(".".equals(field[j+1][i])){

							field[j+1][i] = "v";
							field[j][i] = ".";
					}//commond"D"end


				}else if("L".equals(commond[comNum])){


					if(i == 0 || !".".equals(field[j][i-1])){
						//??????????????????????????´???????????????????????´
						field[j][i] = "<";
					}else if(".".equals(field[j][i-1])){

						field[j][i-1] = "<";
						field[j][i] = ".";
					}//commond"L"end

				}


				/*System.out.println("????????????");
				for(int jj = 0; jj < intHeight; jj++){
					for(int ii = 0; ii < intWidth; ii++){
						System.out.print(field[jj][ii]);
					}
					System.out.println();
				}
				System.out.println();*/
			}

		}//changeField End

		/**
		 * ????????????????????????????????????
		 *
		 * */
		public int[] getTank(){

			//????????????????????±??¨???????????????????????????
			int[] tank = new int[3];

			//for?????§??????????????????????????????
			for(int j = 0; j < intHeight; j++){
				for(int i = 0; i < intWidth; i++){

					if("^".equals(field[j][i])){
						tank[0] = j;
						tank[1] = i;
						tank[2] = 1;
					}else if(">".equals(field[j][i])){
						tank[0] = j;
						tank[1] = i;
						tank[2] = 2;
					}else if("v".equals(field[j][i])){
						tank[0] = j;
						tank[1] = i;
						tank[2] = 3;
					}else if("<".equals(field[j][i])){
						tank[0] = j;
						tank[1] = i;
						tank[2] = 4;
					}

				}
			}
			return tank;
		}
	}
}

Measured memory_bytes: 35072