#include <stdio.h>
int main(void)
{
int test_case;
scanf("%d\n", &test_case);
for (int z = 1; z<= test_case; z++) {
int h, w;
scanf("%d %d\n", &h,&w);
char map[21][21] = { {0,} , };
for (int i = 0; i < h; i++)
scanf("%s", map[i]);
int n;
scanf("%d\n", &n);
int x, y;
for (int i = 0; i < h; i++) {
for (int j = 0; j < w; j++) {
if (map[i][j] == '^' || map[i][j] == '<' || map[i][j] == '>' || map[i][j] == 'v') {
x = i;
y = j;
i = 100;
break;
}
}
}
for (int i = 0; i < n; i++) {
char key;
scanf("%c", &key);
if (key == 'U') {
if (x - 1 >= 0 && map[x - 1][y] == '.') {
map[x][y] = '.';
x = x - 1;
}
map[x][y] = '^';
}
else if (key == 'D') {
if (x + 1 < h && map[x + 1][y] == '.') {
map[x][y] = '.';
x = x + 1;
}
map[x][y] = 'v';
}
else if (key == 'L') {
if (y - 1 >= 0 && map[x][y - 1] == '.') {
map[x][y] = '.';
y = y - 1;
}
map[x][y] = '<';
}
else if (key == 'R') {
if (y + 1 < w && map[x][y + 1] == '.') {
map[x][y] = '.';
y = y + 1;
}
map[x][y] = '>';
}
else if (key == 'S') {
if (map[x][y] == '^') {
for (int j = x - 1; j >= 0; j--) {
if (map[j][y] == '#') {
break;
}
else if (map[j][y] == '*') {
map[j][y] = '.';
break;
}
}
}
else if (map[x][y] == 'v') {
for (int j = x + 1; j < h; j++) {
if (map[j][y] == '#') {
break;
}
else if (map[j][y] == '*') {
map[j][y] = '.';
break;
}
}
}
else if (map[x][y] == '<') {
for (int j = y - 1; j >= 0; j--) {
if (map[x][j] == '#') {
break;
}
else if (map[x][j] == '*') {
map[x][j] = '.';
break;
}
}
}
else if (map[x][y] == '>') {
for (int j = y + 1; j < w; j++) {
if (map[x][j] == '#') {
break;
}
else if (map[x][j] == '*') {
map[x][j] = '.';
break;
}
}
}
}
}
printf("#%d ", z);
for (int i = 0; i < h; i++)
printf("%s\n", map[i]);
}
return 0;
}