Example

Input

3 2
R1


Output

3 1 2
4 5 6
7 8 9
#include <iostream>
#include <vector>

using namespace std;

int N;
vector<int> L(int n){
    vector<int> V(N*N);
    for(int i=0;i<N*N;i++) V[i]=i;
    for(int i=N*(n-1);i<N*n-1;i++){
        V[i]=i+1;
    }
    V[N*n-1]=N*(n-1);
    return V;
}

vector<int> R(int n){
    vector<int> V(N*N);
    for(int i=0;i<N*N;i++) V[i]=i;
    for(int i=N*(n-1)+1;i<N*n;i++){
        V[i]=i-1;
    }
    V[N*(n-1)]=N*n-1;
    return V;
}

vector<int> U(int n){
    vector<int> V(N*N);
    for(int i=0;i<N*N;i++) V[i]=i;
    for(int i=n-1;i+N<N*N;i+=N) V[i]+=N; 
    V[N*(N-1)+(n-1)]=n-1;
    return V;
}

vector<int> D(int n){
    vector<int> V(N*N);
    for(int i=0;i<N*N;i++) V[i]=i;
    for(int i=N+n-1;i<N*N;i+=N) V[i]-=N;
    V[n-1]=N*(N-1)+(n-1);
    return V;
}   

vector<int> C(vector<int> V1, vector<int> V2){
    vector<int> V(N*N);
    for(int i=0;i<N*N;i++) V[i]=V1[V2[i]];
    return V;
}

vector<int> T(vector<int> V ,int n){
    int b=1;
    vector<int> B=V;
    vector<int> ret(N*N);
    for(int i=0;i<N*N;i++) ret[i]=i;
    while(n>=b){
        if(b&n){
            ret=C(ret,B);
        }
        B=C(B,B);
        b<<=1;
    }
    return ret;
}

int number(string S, int& ite){
    int n=0;
    while('0'<=S[ite]&&S[ite]<='9'){
        n*=10;
        n+=S[ite]-'0';
        ite++;//テ」ツ?禿」ツ?ョテヲツ卍づァツつケテ」ツ?ァテ」ツ?ッ')'テ」ツ?凝ヲツ慊ォテ・ツーツセ
    }
    return n;
}

vector<int> rec(string S, int& ite){
    vector<int> ret(N*N),fac;
    for(int i=0;i<N*N;i++) ret[i]=i;
    while(ite<S.size()){
        if(S[ite]=='('){
            ite++;
            fac=rec(S,ite);
            ite++;//')'テ」ツつ津ィツェツュテ」ツ?ソテゥツ」ツ崚」ツ?ーテ」ツ??
            fac=T(fac,number(S,ite));
            ret=C(ret,fac);
        }else{
            if(S[ite]=='R'){
                ite++;
                fac=R(number(S,ite));
            }else if(S[ite]=='L'){
                ite++;
                fac=L(number(S,ite));
            }else if(S[ite]=='D'){
                ite++;
                fac=D(number(S,ite));
            }else if(S[ite]=='U'){
                ite++;
                fac=U(number(S,ite));
            }else{
                cout<<"err"<<endl;
                exit(1);
            }
            ret=C(ret,fac);
        }
        if(S[ite]==')') break;
    }
    return ret;
}

int main(){
    int l;
    cin>>N>>l;
    string S;
    cin>>S;
    if(N==1){
        cout<<1<<endl;
        return 0;
    }
    int i=0;
    vector<int> ans = rec(S,i);
    for(int i=0;i<N;i++){
        for(int j=0;j<N;j++){
            if(j)cout<<' ';
            cout<<ans[i*N+j]+1;
        }
        cout<<endl;
    }

    return 0;
}