#include <stdio.h>
//#define DEBUG

/*??°?????????????????°*/
char map[22][22] ={{}};			//??°???
int tankx = 0 ;
int tanky = 0 ;					//?????????x??§?¨????y??§?¨?????¨????
int x = 0 ;						//??°????????????
int y = 0 ;						//??°???????¨????



void showmap(void);
void readmap(void);
void control(char);
void shootU(void);
void shootD(void);
void shootR(void);
void shootL(void);

void showanswer(void);


int main (void){

	int j = 0 ;					//??????????????????????????°
	int k = 0 ;					//???????????°

	scanf("%d" , &j );

	for(k = 1 ; k <= j ; k++){		//?????°???????????????????????????????????????

		int n = 0 ;					//??????????????°
		char command[101] = {} ;	//??????????????????
		int i = 0 ;					//???????????°

		readmap();

		scanf("%d",&n);
		scanf("%s",command);

#ifdef DEBUG
		showmap();
#endif

		for( i = 0 ; i < n ; i++ ){
			control(command[i]);		//????????¢??°??????????????????

		}

		showanswer();

	if(k != j){		//???????????????
		printf("\n");
	}

	}//???????????°k???????????????????????§

	return 0 ;
}

/*???????¢??????¨????????¨?????°??¢?????¨???????????¢??°*/
void showmap(void){
	int i = 0 ;
	int j = 0 ;

	for(i=0;i<22;i++){
		for(j=0;j<22;j++){
			printf("%c",map[i][j]);
		}
		printf("\n");
	}
	printf("\n");
}


/*????????¨????????¨?????°??¢?????¨???????????¢??°*/
void showanswer(void){
	int i = 0 ;
	int j = 0 ;

	for(i=1;i<=y;i++){
		for(j=1;j<=x;j++){
			printf("%c",map[i][j]);
		}
		printf("\n");
	}
}

/*???????????????????????¨??°??¢?????????????????¢??°*/
void readmap(void){
	int i = 0 ;
	int j = 0 ;
	char terrain[21] = {} ;

	scanf("%d",&y);
	scanf("%d",&x);

	/*??°??????????????????????????¨???-??§???????????????*/
	for(i=0;i<22;i++){
		for(j=0;j<22;j++){
			map[i][j] =0;
		}
	}

	for(i=1;i<=y;i++){
		scanf("%s",terrain);
		for(j=1;j<=x;j++){
			map[i][j] = terrain[j-1];
			if(map[i][j] == '^'||map[i][j] == '<'||map[i][j] == '>'||map[i][j] == 'v'){
				tankx = j ;
				tanky = i ;
			}
		}
	}
}

void control(char cmd){

	switch(cmd){
	case 'U':
		map[tanky][tankx]='^';		//???????????????????????????
		if(map[tanky-1][tankx] == '.' ){		//1?????????????????°??§????????°
			map[tanky][tankx] = '.' ;			//??????????????¨??§?¨?????????°??????????????????
			tanky--;							//???????????§?¨????1?????????????§????
			map[tanky][tankx] = '^' ;			//???????????°????????§?¨????????????????
		}
		break;
	case 'D':
		map[tanky][tankx]='v';		//???????????????????????????
		if(map[tanky+1][tankx] == '.' ){		//1?????????????????°??§????????°
			map[tanky][tankx] = '.' ;			//??????????????¨??§?¨?????????°??????????????????
			tanky++;							//???????????§?¨????1?????????????§????
			map[tanky][tankx] = 'v' ;			//???????????°????????§?¨????????????????
		}
		break;
	case 'R':
		map[tanky][tankx]='>';		//???????????????????????????
		if(map[tanky][tankx+1] == '.' ){		//1?????????????????°??§????????°
			map[tanky][tankx] = '.' ;			//??????????????¨??§?¨?????????°??????????????????
			tankx++;							//???????????§?¨????1?????????????§????
			map[tanky][tankx] = '>' ;			//???????????°????????§?¨????????????????
		}
		break;
	case 'L':
		map[tanky][tankx]='<';		//???????????????????????????
		if(map[tanky][tankx-1] == '.' ){		//1?????????????????°??§????????°
			map[tanky][tankx] = '.' ;			//??????????????¨??§?¨?????????°??????????????????
			tankx--;							//???????????§?¨????1?????????????§????
			map[tanky][tankx] = '<' ;			//???????????°????????§?¨????????????????
		}
		break;

	case 'S':

		switch(map[tanky][tankx]){
		case '^':
			shootU();
			break;
		case 'v':
			shootD();
			break;
		case '>':
			shootR();
			break;
		case '<':
			shootL();
			break;
		default:
			printf("control error at case 'S'\n");
			break;
		}
		break;



	default:
		printf("control error\n");
		break;

	}

}

void shootU(void){
	int i = 0 ;
	for( i = 1 ; i < 20 ; i++){			//?????§20??????????????§19?????????????????????????????£????????????????????????
		switch(map[tanky-i][tankx]){	//??????????????¨??§?¨??????????????????????????????????????????????

		case '*':						//??¬?????¬????£????????????£??????
			map[tanky-i][tankx] = '.' ;		//?????°????????????????????????
			return;

		case '#':						//???????£????????????£??????
			return;						//??????????????????
		case '\0':						//\0???????????£?????????????????°????????????????¶????????????¨???????????????
			return;						//??????????????????

		case '.':						//?????°????°´????????????????¶????
			break;
		case '-':
			break;

		default:						//???????????\????????????????????¶??????????????????
			printf("shootU error:map[tanky-i][tankx] == '%c'\n",map[tanky-i][tankx]);
			break;
		}
	}
}

void shootD(void){
	int i = 0 ;
	for( i = 1 ; i < 20 ; i++){			//?????§20??????????????§19?????????????????????????????£????????????????????????
		switch(map[tanky+i][tankx]){	//??????????????¨??§?¨??????????????????????????????????????????????

		case '*':						//??¬?????¬????£????????????£??????
			map[tanky+i][tankx] = '.' ;		//?????°????????????????????????
			return;

		case '#':						//???????£????????????£??????
			return;						//??????????????????
		case '\0':						//\0???????????£?????????????????°????????????????¶????????????¨???????????????
			return;						//??????????????????

		case '.':						//?????°????°´????????????????¶????
			break;
		case '-':
			break;

		default:						//???????????\????????????????????¶??????????????????
			printf("shootD error:map[tanky+i][tankx] == '%c'\n",map[tanky-i][tankx]);
			break;
		}
	}
}

void shootR(void){
	int i = 0 ;
	for( i = 1 ; i < 20 ; i++){			//?????§20??????????????§19?????????????????????????????£????????????????????????
		switch(map[tanky][tankx+i]){	//??????????????¨??§?¨??????????????????????????????????????????????

		case '*':						//??¬?????¬????£????????????£??????
			map[tanky][tankx+i] = '.' ;		//?????°????????????????????????
			return;

		case '#':						//???????£????????????£??????
			return;						//??????????????????
		case '\0':						//\0???????????£?????????????????°????????????????¶????????????¨???????????????
			return;						//??????????????????

		case '.':						//?????°????°´????????????????¶????
			break;
		case '-':
			break;

		default:						//???????????\????????????????????¶??????????????????
			printf("shootR error:map[tanky][tankx+i] == '%c'\n",map[tanky][tankx+i]);
			break;
		}
	}
}

void shootL(void){
	int i = 0 ;
	for( i = 1 ; i < 20 ; i++){			//?????§20??????????????§19?????????????????????????????£????????????????????????
		switch(map[tanky][tankx-i]){	//??????????????¨??§?¨??????????????????????????????????????????????

		case '*':						//??¬?????¬????£????????????£??????
			map[tanky][tankx-i] = '.' ;		//?????°????????????????????????
			return;

		case '#':						//???????£????????????£??????
			return;						//??????????????????
		case '\0':						//\0???????????£?????????????????°????????????????¶????????????¨???????????????
			return;						//??????????????????

		case '.':						//?????°????°´????????????????¶????
			break;
		case '-':
			break;

		default:						//???????????\????????????????????¶??????????????????
			printf("shootL error:map[tanky][tankx-1] == '%c'\n",map[tanky][tankx-i]);
			break;
		}
	}
}

Measured memory_bytes: 576