// ACSL Intermediate Division Programming Contest #3

// Tim Thomas

// Oklahoma School of Science and Mathematics

#include <iostream>

 

using namespace std;

 

//char* interpret(char string[]);

void interpret(char string[]);

 

char buffer[100];

char* answer;

char temp[100];

int length;

 

int main()

{

    

     for(int z=0;z<5;z++)

     {   

          for(int w=0; w<100; w++)

               buffer[w]=0;

          cout << "Please enter the expression:\n";

          cin >> buffer;

          int num=strlen(buffer)-1;

          while(buffer[num]!='/')

               num--;

          answer=buffer+num+1;

          length=strlen(answer);

          interpret(buffer);

          cout << answer << endl;

     }

    

     system("PAUSE"); 

     return 0;

}

 

void interpret(char string[])

{

     if(string[0]=='L')

     {

          if(string[1]=='S'&&string[2]=='-')

          {

               int number=int(string[3]-48);

               string+=5;

               for(int t=0;t<length;t++)

                    if(t+number<length)

                         answer[t]=answer[t+number];

                    else

                         answer[t]='#';

               interpret(string);

          }

          else if(string[1]=='C')

          {

               int number=int(string[3]-48);

               string+=5;

               for(int t=0;t<length;t++)

                    temp[t]=answer[t];

               for(int t=0;t<length;t++)

                    answer[t]=temp[(t+number)%length];

               interpret(string);

          }

     }

     else if(string[0]=='R')

     {

          if(string[1]=='S')

          {

               int number=int(string[3]-48);

               string+=5;

               for(int t=length-1;t>=0;t--)

                    if(t-number>=0)

                         answer[t]=answer[t-number];

                    else

                         answer[t]='#';

               interpret(string);

          }

          else if(string[1]=='C')

          {

               int number=int(string[3]-48);

               number=(length-(number%length))%length;

               string+=5;

               for(int t=0;t<length;t++)

                    temp[t]=answer[t];

               for(int t=0;t<length;t++)

                    answer[t]=temp[(t+number)%length];

               interpret(string);

          }

          else if(string[1]=='E'&&string[2]=='V'&&string[3]=='-')

          {

               int s=int(string[4]-48);

               int l=int(string[5]-48);

               string+=7;

               int num=s-1+l-1;

               for(int t=0;t<length;t++)

                    temp[t]=answer[t];

               for(int t=s-1;t<l+s-1;t++)

               {

                    answer[t]=temp[num];

                    num--;

               }

               interpret(string);

          }

     }

     else if(string[0]=='M'&&string[1]=='C')

     {

          int s=int(string[3]-48);

          int l=int(string[4]-48);

          int x=int(string[5]-48);

          char d=string[6];

          string+=8;

          if(d=='R')

               x=(l-(x%l))%l;

          for(int t=0;t<length;t++)

               temp[t]=answer[t];

          for(int t=s-1;t<s-1+l;t++)

               answer[t]=temp[(t+x-s+1)%l+s-1];

          interpret(string);

     }

}

 

    

 

/*

char* interpret(char string[])

{

     //cout << "interpret(" << string << ")\n";

     if(string[0]=='L')

     {

          if(string[1]=='S'&&string[2]=='-')

          {

               int number=int(string[3]-48);

               string+=5;

               //cout << "calling interpret from LS.\n";

               string=interpret(string);

               //cout << "in LS.\n";

               int length=strlen(string);

               for(int t=0;t<length;t++)

                    if(t+number<length)

                         string[t]=string[t+number];

                    else

                         string[t]='#';

               //cout << "returning:" << string << endl;

          }

          else if(string[1]=='C')

          {

              

          }

     }

     else if(string[0]=='R')

     {

          if(string[1]=='S')

          {

               int number=int(string[3]-48);

               string+=5;

               //cout << "calling interpret from RS.\n";

               string=interpret(string);

               //cout << "in RS.\n";

               int length=strlen(string);

               for(int t=length-1;t>=0;t--)

                    if(t-number>=0)

                         string[t]=string[t-number];

                    else

                         string[t]='#';

               //cout << "returning:" << string << endl;

          }

          else if(string[1]=='C')

          {

              

          }

          else if(string[1]=='E'&&string[2]=='V'&&string[3]=='-')

          {

              

          }

     }

     else if(string[0]=='M'&&string[1]=='C')

     {

         

     }

    

     return string;

}

*/