#include <bits/stdc++.h>
using namespace std;
vector<vector<int>>flipleftright(vector<vector<int>>m) {
for (auto &row : m) {
reverse(row.begin(), row.end());
}
return m;
}
vector<vector<int>>flipupdown(vector<vector<int>>m) {
reverse(m.begin(), m.end());
return m;
}
vector<vector<int>>rotates(vector<vector<int>>m) {
if (m.empty()) {
return m;
}
int cols = m[0].size();
int rows = m.size();
vector<vector<int>>transm(cols, vector<int>(rows));
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
transm[j][i] = m[i][j];
}
}
return flipleftright(transm);
}
vector<vector<int>>rotaten(vector<vector<int>>m) {
if (m.empty()) {
return m;
}
vector<vector<int>>newm = flipleftright(m);
int cols = newm[0].size();
int rows = newm.size();
vector<vector<int>>transm(cols, vector<int>(rows));
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
transm[j][i] = newm[i][j];
}
}
return transm;
}
int main() {
int m, n;
cin >> m >> n;
vector<vector<int>>a(m, vector<int>(n));
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cin >> a[i][j];
}
}
string s;
cin >> s;
for (size_t i = 0; i < s.size(); i++) {
if (s[i] == 'A') {
a = rotates(a);
} else if (s[i] == 'B') {
a = rotaten(a);
} else if (s[i] == 'C') {
a = flipleftright(a);
} else if (s[i] == 'D') {
a = flipupdown(a);
}
}
for (size_t i = 0; i < a.size(); i++) {
for (size_t j = 0; j < a[0].size(); j++) {
cout << a[i][j] << " ";
}
cout << endl;
}
return 0;
}