import java.util.*;

public class Main {
	public static void main(String args[]) {
		StringBuilder result = new StringBuilder();
		Scanner scan = new Scanner(System.in);
		int setCount = scan.nextInt();

		// setCount????????°??°???????????????
		for(int i=0;i<setCount;i++){

		// PlayerControl??????????????????????????????
		PlayerControl pc = new PlayerControl(scan.nextInt(), scan.nextInt());
		// ????????????????????????
		pc.mapBuild(scan);

		// System.out.println(pc.map[3][0]);

		// ?????¬???????????\??????????????°?????????
		int playerControlCount = scan.nextInt();
		// ?????¬???????????\??????????????????????????????
		String setPlayerControl = scan.next();
		for (int k = 0; k < playerControlCount; k++) {
			if (String.valueOf(setPlayerControl.charAt(k)).equals("S")) {
				// ???????????????????????????????????????????°??????????
				pc.tankShoot();
			} else {
				// ?????????????????¢??????????????????????????°??§????????°?§??????????
				pc.tankMove(String.valueOf(setPlayerControl.charAt(k)));
			}
		}
		
		//???????????¨????????????????????????result????????????????????????
		result.append(pc.mapOutput()).append("\n");
		}
		
		result.deleteCharAt(result.length() - 2);
		System.out.print(new String(result));

		

	}
}

/**
 * ?????¬????????????????????????????????????????????????
 * 
 * @author SS
 *
 */
class PlayerControl {
	// ??????????????????
	String map[][];

	// ??????????????±
	int tankHeight;
	int tankWidth;
	String tankState;

	// ?????????????????????????????¨????????????????¨????
	PlayerControl(int height, int width) {
		map = new String[height][width];
		tankHeight = 0;
		tankWidth = 0;
		tankState = "";
	}

	/**
	 * ??????????????????
	 * 
	 * @param main???Scanner??????????¶????
	 */
	public void mapBuild(Scanner scan) {
		// height * width ??????????????§??????????????????????????????
		for (int i = 0; i < map.length; i++) {
			String setObject = scan.next();
			for (int j = 0; j < map[0].length; j++) {
				// ?????????????????¨??¶???????????±????¨????
				switch (map[i][j] = String.valueOf(setObject.charAt(j))) {
				case "^":

					tankInfo(i, j, "^");
					break;
				case "v":
					tankInfo(i, j, "v");
					break;
				case ">":
					tankInfo(i, j, ">");
					break;
				case "<":
					tankInfo(i, j, "<");
					break;
				}
			}
		}

	}

	/**
	 * ?????????????????¨??¶???????¨??????????
	 * 
	 * @param height
	 *            ????????§?¨?
	 * @param width
	 *            ?¨??????§?¨?
	 * @param state
	 *            ??¶?????????????????????
	 */
	private void tankInfo(int height, int width, String state) {

		tankHeight = height;
		tankWidth = width;
		tankState = state;

	}

	/**
	 * 
	 * @param ?????¬???????????????????????????????????????
	 */
	public void Control(String instruction) {
		switch (instruction) {
		case "S":// ???????????????????????¨???
			System.out.println("tankShoot()???????????????");
			tankShoot();
			break;
		}

	}

	public void tankMove(String move) {
		switch (move) {
		case "U":// ??????????????¢???????????????????????°???????§??????????
			// ???????????????????????????????????????
			tankState = "^";
			map[tankHeight][tankWidth] = tankState;

			// ?????????????????????????????§????????¨?????????????????????
			if (tankHeight - 1 >= 0) {

				// ?????????????????°??§????????°?§?????????????
				if (map[tankHeight - 1][tankWidth].equals(".")) {
					// ?§???????????????????????????????????±??????´???????????°?????????
					map[tankHeight - 1][tankWidth] = "^";
					map[tankHeight][tankWidth] = ".";
					tankInfo(tankHeight - 1, tankWidth, tankState);
				}
			}
			break;
		case "D":// ??????????????¢???????????????????????°???????§??????????
			// ???????????????????????????????????????
			tankState = "v";
			map[tankHeight][tankWidth] = tankState;
			
			// ?????????????????????????¶????????????¨?????????????????????
			if (tankHeight + 1 < map.length) {
				// ?????????????????°??§????????°?§?????????????
				if (map[tankHeight + 1][tankWidth].equals(".")) {
					// ?§???????????????????????????????????±??????´???????????°?????????
					map[tankHeight + 1][tankWidth] = "v";
					map[tankHeight][tankWidth] = ".";
					tankInfo(tankHeight + 1, tankWidth, tankState);
				}
			}
			break;
		case "L":// ??????????????¢???????????????????????°???????§??????????
			// ???????????????????????????????????????
			tankState = "<";
			map[tankHeight][tankWidth] = tankState;

			// ?????????????????????????????§????????¨?????????????????????
			if (tankWidth - 1 >= 0) {

				// ?????????????????°??§????????°?§?????????????
				if (map[tankHeight][tankWidth - 1].equals(".")) {
					// ?§???????????????????????????????????±??????´???????????°?????????
					map[tankHeight][tankWidth - 1] = "<";
					map[tankHeight][tankWidth] = ".";
					tankInfo(tankHeight, tankWidth - 1, tankState);
				}
			}
			break;
		case "R":// ??????????????¢???????????????????????°???????§??????????
			// ???????????????????????????????????????
			tankState = ">";
			map[tankHeight][tankWidth] = tankState;

			// ?????????????????????????¶????????????¨?????????????????????
			if (tankWidth + 1 < map[0].length) {

				// ?????????????????°??§????????°?§?????????????
				if (map[tankHeight][tankWidth + 1].equals(".")) {
					// ?§???????????????????????????????????±??????´???????????°?????????
					map[tankHeight][tankWidth + 1] = ">";
					map[tankHeight][tankWidth] = ".";
					tankInfo(tankHeight, tankWidth + 1, tankState);
				}
			}
			break;
		}
	}

	/**
	 * S?????????????????¨??????????????????????????????????????????????°????????????? ??¬?????¬????£??????¶????????£?????¨???????????¬?????¬????£?????????°??¨?????????
	 */
	public void tankShoot() {
			switch (tankState) {
			case "^":// ???????????????????????????

				for (int i = 1; i <= tankHeight; i++) {
					if (map[tankHeight - i][tankWidth].equals("*")) {// ??¬?????¬????£????????????£?????´????????????????????°?????????
						map[tankHeight - i][tankWidth] = ".";
						break;
					} else if (map[tankHeight - i][tankWidth].equals("#")) {// ???????£????????????£?????´???????????????????????????
						break;
					}
				}

				break;
			case "v":// ???????????????????????????
				for (int i = 1; i <= (map.length - 1) - tankHeight; i++) {
					if (map[tankHeight + i][tankWidth].equals("*")) {// ??¬?????¬????£????????????£?????´????????????????????°?????????
						map[tankHeight + i][tankWidth] = ".";
						break;
					} else if (map[tankHeight + i][tankWidth].equals("#")) {// ???????£????????????£?????´???????????????????????????
						break;
					}
				}
				break;
			case ">":// ???????????????????????????
				for (int i = 1; i <= (map[0].length - 1) - tankWidth; i++) {
					if (map[tankHeight][tankWidth + i].equals("*")) {// ??¬?????¬????£????????????£?????´????????????????????°?????????
						map[tankHeight][tankWidth + i] = ".";
						break;
					} else if (map[tankHeight][tankWidth + i].equals("#")) {// ???????£????????????£?????´???????????????????????????
						break;
					}
				}
				break;
			case "<":// ???????????????????????????
				for (int i = 1; i <= tankWidth; i++) {
					if (map[tankHeight][tankWidth - i].equals("*")) {// ??¬?????¬????£????????????£?????´????????????????????°?????????
						map[tankHeight][tankWidth - i] = ".";
						break;
					} else if (map[tankHeight][tankWidth - i].equals("#")) {// ???????£????????????£?????´???????????????????????????
						break;
					}
				}
				break;
			}

	}

	public StringBuilder mapOutput() {
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < map.length; i++) {
			for (int j = 0; j < map[0].length; j++) {
				sb.append(map[i][j]);
			}
			sb.append("\n");
		}
		
		return sb;
	}

}

Measured memory_bytes: 34868