#include <iostream>
#include <string>
#include <vector>

using namespace std;

typedef pair<int, int> P;

int main() {
	int t;
	cin >> t;
	for (int i = 0; i < t; i++) {
		int h, w;
		cin >> h >> w;
		vector<string> data(h);
		P p;
		for (int j = 0; j < h; j++) {
			cin >> data[j];
			if (data[j].find('>') != string::npos) {
				p.first = j;
				p.second = data[j].find('>');
			}

			if (data[j].find('<') != string::npos) {
				p.first = j;
				p.second = data[j].find('<');
			}
			
			if (data[j].find('^') != string::npos) {
				p.first = j;
				p.second = data[j].find('^');
			}
			
			if (data[j].find('v') != string::npos) {
				p.first = j;
				p.second = data[j].find('v');
			}
		}
		int n;
		cin >> n;
		string aa;
		cin >> aa;
		//cout << p.first << ' ' << p.second << endl;
		for (int j = 0; j < n; j++) {
			//cout << aa[j] << endl;
			if (aa[j] == 'U') {
				data[p.first][p.second] = '^';
				if (p.first-1 >= 0 && data[p.first-1][p.second] == '.') {
					data[p.first][p.second] = '.';
					data[p.first-1][p.second] = '^';
					p.first--;
				}
			} else if (aa[j] == 'D') {
				data[p.first][p.second] = 'v';
				if (p.first+1 < h && data[p.first+1][p.second] == '.') {
					data[p.first][p.second] = '.';
					data[p.first+1][p.second] = 'v';
					p.first++;
				}
			} else if (aa[j] == 'L') {
				data[p.first][p.second] = '<';
				if (p.second-1 >= 0 && data[p.first][p.second-1] == '.') {
					data[p.first][p.second] = '.';
					data[p.first][p.second-1] = '<';
					p.second--;
				}
			} else if (aa[j] == 'R') {
				data[p.first][p.second] = '>';
				if (p.second+1 < w && data[p.first][p.second+1] == '.') {
					data[p.first][p.second] = '.';
					data[p.first][p.second+1] = '>';
					p.second++;
				}
			} else {
				P pp = p;
				//cout << data[p.first][p.second] << endl;
				if (data[p.first][p.second] == '^') {
					//cout << 'b' << endl;
					while (pp.first > 0) {
						pp.first--;
						if (data[pp.first][pp.second] == '*') {
							data[pp.first][pp.second] = '.';
							break;
						} else if (data[pp.first][pp.second] == '#') {
							break;
						}
					}
					//cout << 'a' << endl;
				} else if (data[p.first][p.second] == 'v') {
					while (pp.first < h-1) {
						pp.first++;
						if (data[pp.first][pp.second] == '*') {
							data[pp.first][pp.second] = '.';
							break;
						} else if (data[pp.first][pp.second] == '#') {
							break;
						}
					}
				} else if (data[p.first][p.second] == '<') {
					while (pp.second > 0) {
						pp.second--;
						if (data[pp.first][pp.second] == '*') {
							data[pp.first][pp.second] = '.';
							break;
						} else if (data[pp.first][pp.second] == '#') {
							break;
						}
					}
				} else if (data[p.first][p.second] == '>') {
					while (pp.second < w-1) {
						pp.second++;
						if (data[pp.first][pp.second] == '*') {
							data[pp.first][pp.second] = '.';
							break;
						} else if (data[pp.first][pp.second] == '#') {
							break;
						}
					}
				} 
			}
			/*for (int k = 0; k < h; k++) {
				cout << data[k] << endl;
			}*/
		}
		if (i != 0) {
			cout << endl;
		}
		for (int j = 0; j < h; j++) {
			cout << data[j] << endl;
		}
	}
	return 0;
}

Measured memory_bytes: 1208