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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include<iostream>
#include<vector>

using namespace std;

void D(vector<vector<char>>&V)
{
    int n=V.size(),m=V[0].size() ;
    vector<vector<char>>V2(n,vector<char>(m,'.')) ;
    for(int i=0;i<m;i++)
    {
        int j=n-1 ;
        for(int p=n-1;p>=0;p--)
        {
            if(V[p][i]=='.') continue;
            V2[j--][i]=V[p][i] ;
        }
    }
    V=V2;
    return ;
}

void G(vector<vector<char>>&V)
{
    int n=V.size(),m=V[0].size() ;
    vector<vector<char>>V2(n,vector<char>(m,'.')) ;
    for(int i=0;i<m;i++)
    {
        int j=0 ;
        for(int p=0;p<n;p++)
        {
            if(V[p][i]=='.') continue;
            V2[j++][i]=V[p][i] ;
        }
    }
    V=V2;
    return ;
}

void L(vector<vector<char>>&V)
{
    int n=V.size(),m=V[0].size() ;
    vector<vector<char>>V2(n,vector<char>(m,'.')) ;
    for(int i=0;i<n;i++)
    {
        int j=0;
        for(int p=0;p<m;p++)
        {
            if(V[i][p]=='.') continue;
            V2[i][j++]=V[i][p] ;
        }
    }
    V=V2;
    return ;
}

void P(vector<vector<char>>&V)
{
    int n=V.size(),m=V[0].size() ;
    vector<vector<char>>V2(n,vector<char>(m,'.')) ;
    for(int i=0;i<n;i++)
    {
        int j=m-1;
        for(int p=m-1;p>=0;p--)
        {
            if(V[i][p]=='.') continue;
            V2[i][j--]=V[i][p] ;
        }
    }
    V=V2;
    return ;
}

int main()
{
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(0) ;
    std::cout.tie(0);

    int n,m; cin >> n >> m ;
    vector<vector<char>>V(n,vector<char>(m)) ;
    for(auto &i:V) for(auto &p:i) cin >> p ;

    /*
    for(auto i:V)
    {
        for(auto p:i) cout << p << " " ;
        cout << endl ;
    }
    cout << endl ;
    */

    int q; cin >> q;
    char firstGD='?',lastGD='?',firstLP='?',lastLP='?' ;
    int e=-1,f=-1;
    for(int i=0;i<q;i++)
    {
        char a; cin >> a;
        if(a=='G')
        {
            if(firstGD=='?') firstGD=a,G(V) ;
            lastGD=a,e=i ;
        }
        if(a=='D')
        {
            if(firstGD=='?') firstGD=a,D(V) ;
            lastGD=a,e=i ;
        }
        if(a=='L')
        {
            if(firstLP=='?') firstLP=a,L(V) ;
            lastLP=a,f=i;
        }
        if(a=='P')
        {
            if(firstLP=='?') firstLP=a,P(V) ;
            lastLP=a,f=i;
        }
    }
    if(e<f)
    {
        if(lastGD!='?' && lastGD=='G') G(V) ;
        if(lastGD!='?' && lastGD=='D') D(V) ;
        if(lastLP!='?' && lastLP=='L') L(V) ;
        if(lastLP!='?' && lastLP=='P') P(V) ;
    }
    else
    {
        if(lastLP!='?' && lastLP=='L') L(V) ;
        if(lastLP!='?' && lastLP=='P') P(V) ;
        if(lastGD!='?' && lastGD=='G') G(V) ;
        if(lastGD!='?' && lastGD=='D') D(V) ;
    }

    for(auto i:V)
    {
        for(auto p:i) cout << p ;
        cout << endl ;
    }
}