/* Simion Zanescu Mihai

   9’th grade

   CYGNUS COMPUTER – RO

   International Senior 5

   Language C++

   ACSL Contest #4 – ACSL STACKS AND QUEUES

*/

 

#include<stdio.h>

#include<string.h>

#include<ctype.h>

 

char v[100],s[100];

int l,lv;

void pop(char c,int x)

{

int i=1;

if(c=='S')

  {

  for(i=l-x;i<l;++i)

        v[i]='0';

  }

else

  {

  for(i=0;i<=l-x;++i)

      {v[i]=v[i+x];v[i+x]='0';}

  }

l=l-x;

}

 

void psh(char n)

{

v[l]=n;

++l;

}

 

void dup(int x)

{

int i;

for(i=0;i<x;++i)

      psh(v[i]);

}

 

void swp(int x)

{

int i,l2;

char aux;

l2=l-1;

for(i=x-1;i>=0;--i)

   {

   aux=v[i];

   v[i]=v[l2];

   v[l2]=aux;

   --l2;

   }

}

 

void swh(char c)

{

if(c=='S')

      s[0]='Q';

else

      s[0]='S';

}

 

void crc(char c,int x)

{

int y,i,j=0;

char a[100];

memset(a,0,sizeof(a));

y=x%l;

if(c=='Q')

  {

  for(i=y;i<l;++i)

      a[j++]=v[i];

  for(i=0;i<y;++i)

      a[j++]=v[i];

  for(i=0;i<l;++i)

      v[i]=a[i];

  }

else

  {

  for(i=l-y;i<l;++i)

      a[j++]=v[i];

  for(i=0;i<l-y;++i)

      a[j++]=v[i];

  for(i=0;i<l;++i)

      v[i]=a[i];

  }

}

 

void ins(int x,char n,char c)

{

int i;

char a[100];

if(c=='S')

{

for(i=0;i<=l-x;++i)

      a[i]=v[i];

a[i]=n;

for(i=l-x+1;i<l;++i)

      a[i+1]=v[i];

for(i=0;i<=l;++i)

      v[i]=a[i];

++l;

}

else

  {

   for(i=0;i<x-1;++i)

         a[i]=v[i];

   a[i]=n;

   for(i=x-1;i<l;++i)

         a[i+1]=v[i];

   for(i=0;i<=l;++i)

      v[i]=a[i];

   ++l;

  }

}

 

void pin(char n)

{

int i;

for(i=l;i>0;--i)

      v[i]=v[i-1];

v[0]=n;

++l;

}

 

void srta()

{

int s,i;

char aux;

s=1;

for(i=0;i<l;++i)

      if(v[i]=='0')

            {l=i;break;}

do

  {

  s=1;

  for(i=0;i<l-1;++i)

      if(v[i]>v[i+1])

        {

        aux=v[i];v[i]=v[i+1];v[i+1]=aux;

        s=0;

        }

  }while(!s);

}

 

void srtd()

{

int s,i;

char aux;

for(i=0;i<l;++i)

      if(v[i]=='0')

            {l=i;break;}

do

  {

  s=1;

  for(i=0;i<l-1;++i)

      if(v[i]<v[i+1])

        {

        aux=v[i];v[i]=v[i+1];v[i+1]=aux;

        s=0;

        }

  }while(!s);

}

 

void prt(char c,int x)

{

int i=1;

if(c=='Q')

 {

  for(i=0;i<x;++i)

      {

      printf("%c",v[i]);

      if(i!=x-1)

            printf(", ");

    }

 }

else

 {

 for(i=l-x;i<l;++i)

      {

      printf("%c",v[i]);

      if(i!=l-1)

            printf(", ");

    }

 }

}

 

void read()

{

int i,j;

for(j=1;j<=5;++j)

   {

      memset(v,0,sizeof(v));

      v[0]='A';v[1]='B';v[2]='C';v[3]='D';v[4]='E';

    l=5;

      gets(s);

      lv=strlen(s);

      for(i=3;i<lv;i=i+7)

         if(isalpha(s[i]))

          {

             if(s[i]=='C')

               crc(s[0],s[i+4]-'0');

         if(s[i]=='D')

               dup(s[i+4]-'0');

             if(s[i]=='I')

               {ins(s[i+4]-'0',s[i+7],s[0]);i+=3;}

           if(s[i]=='P')

               {

               if(s[i+1]=='I')

                   pin(s[i+4]);

               if(s[i+1]=='O')

                   pop(s[0],s[i+4]-'0');

               if(s[i+1]=='R')

                 prt(s[0],s[i+4]-'0');

               if(s[i+1]=='S')

                   psh(s[i+4]);

                }

             if(s[i]=='S')

               {

               if(s[i+1]=='R')

                 {

                 if(s[i+4]=='a')

                         srta();

                   else

                         srtd();

                 }

               if(s[i+2]=='H')

                     {swh(s[0]);i=i-2;}

               if(s[i+2]=='P')

                     swp(s[i+4]-'0');

               }

          }

      printf("\n");

   }

}

 

int main()

{

freopen("f.in","r",stdin);

freopen("f.out","w",stdout);

 

read();

 

return 0;

}