평범한 시뮬레이션 문제, 델타 좌표와 문자열로 입력받은 방향의 인덱스를 동일하게 설정함
dx, dy = [-1, 1, 0, 0], [0, 0, -1, 1]
direction = ['^', 'v', '<', '>']
command_direction = ['U', 'D', 'L', 'R']
for T in range(1, int(input())+1):
R, C = list(map(int, input().split()))
M = []
now_r, now_c = 0, 0
for r in range(R):
temp = list(input())
M.append(temp)
for c in range(C):
if temp[c] in direction:
d = direction.index(M[r][c]) # 탱크가 현재 바라보는 방향
now_r, now_c = r, c # 탱크가 현재 위치하는 좌표
COMMAND_NUM = int(input())
COMMAND = list(input())
for cmd in COMMAND:
if cmd == 'S': # 입력된 커맨드가 탱크가 정면에 대포를 발사하는 커맨드라면
dr, dc = now_r+dx[d], now_c+dy[d] # 탱크가 바라보는 방향에서 한 칸 앞의 좌표
while 0 <= dr < R and 0 <= dc < C: # 해당 좌표가 지도 내에 존재하는 좌표라면
if M[dr][dc] == '*': # 부수는게 가능한 벽이라면
M[dr][dc] = '.' # 부수고 땅으로 바꿔준다
break # 벽에 포탄이 부딪혔으므로 루프 탈출
elif M[dr][dc] == '#': # 부스는게 불가능한 벽이라면
break # 벽에 포탄이 부딪혔으므로 루프 탈출
# 벽을 만나지 않았다면 포탄을 정면으로 진행시킨다
dr += dx[d]
dc += dy[d]
else: # 입력된 커맨드가 탱크의 위치와 관련된 커맨드라면
to = command_direction.index(cmd) # 가야할 방향을 확인
M[now_r][now_c] = direction[to] # 탱크를 가야할 방향으로 돌린다
dr, dc = now_r + dx[to], now_c + dy[to] # 가야할 방향에서 바로 1칸 앞 좌표
if 0 <= dr < R and 0 <= dc < C and M[dr][dc] == '.': # 이 좌표가 평지이고 맵 안에 있다면
M[dr][dc] = M[now_r][now_c] # 탱크를 이곳으로 옮기고
M[now_r][now_c] = '.' # 기존에 탱크가 있던 자리는 땅으로 바꾼다
now_r, now_c = dr, dc # 현재 좌표도 탱크가 있는 곳으로 재설정
d = to # 현재 탱크의 방향 설정
print('#{}'.format(T), end=' ')
for r in M:
print(''.join(r))