1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <iostream>
#include <vector>
using namespace std;
void wszystkoP(vector<string>& tablica) {
    int w = tablica.size();
    int k = tablica[0].size();
    for (int i = 0; i < w; i++) {
        int a = k - 1, b = k - 1; //pozycja, cel
        while (a >= 0) {
            if (tablica[i][a] == '.') a--;
            else {
                swap(tablica[i][a], tablica[i][b]);
                a--;
                b--;
            }
        }
    }

}
void wszystkoL(vector<string >& tablica) {
    int w = tablica.size();
    int k = tablica[0].size();
    for (int i = 0; i < w; i++) {
        int a = 0, b = 0; //pozycja, cel
        while (a < k) {
            if (tablica[i][a] == '.') a++;
            else {
                swap(tablica[i][a], tablica[i][b]);
                a++;
                b++;
            }
        }
    }
}
void wszystkoG(vector<string >& tablica) {
    int w = tablica.size();
    int k = tablica[0].size();
    for (int i = 0; i < k; i++) {
        int a = 0, b = 0; //pozycja, cel
        while (a < w) {
            if (tablica[a][i] == '.') a++;
            else {
                swap(tablica[a][i], tablica[b][i]);
                a++;
                b++;
            }
        }
    }
}
void wszystkoD(vector<string>& tablica) {
    int w = tablica.size();
    int k = tablica[0].size();
    for (int i = 0; i < k; i++) {
        int a = w - 1, b = w - 1; //pozycja, cel
        while (a >= 0) {
            if (tablica[a][i] == '.') a--;
            else {
                swap(tablica[a][i], tablica[b][i]);
                a--;
                b--;
            }
        }
    }
}


int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    vector<string> zabawka; //[w][k]
    int n, m;
    cin >> n >> m;
    zabawka.resize(n);
    for (int i = 0; i < n; i++) {
        string x;
        cin >> x;
        zabawka[i] = x;
    }
    int p;
    cin >> p;
    string opcje;
    cin >> opcje;
    char x = 0;
    for (int i = 0; i < opcje.size(); i++) {
        if (opcje[i] == x) continue;
        x = opcje[i];
        if (opcje[i] == 'L' && opcje[i + 1] == 'P')continue;
        if (opcje[i] == 'P' && opcje[i + 1] == 'L')continue;
        if (opcje[i] == 'G' && opcje[i + 1] == 'D')continue;
        if (opcje[i] == 'D' && opcje[i + 1] == 'G')continue;
        x = opcje[i];
        switch (opcje[i]) {
        case 'G':
            wszystkoG(zabawka);
            break;
        case 'D':
            wszystkoD(zabawka);
            break;
        case 'L':
            wszystkoL(zabawka);
            break;
        case 'P':
            wszystkoP(zabawka);
            break;
        }
        //cout << "\n";
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cout << zabawka[i][j];
        }
        cout << "\n";
    }

}