{Andrei Gabriel V. BLANARU
"GRIGORE MOISIL" NATIONAL COMPUTER
SCIENCE COLLEGE from BRASOV
INTERMEDIATE 5
11 GRADE
CONTEST #3}
var ss:string;
procedure l_s(s:string);
var x,cod,i:integer;
begin
delete(s,1,3);
val(s,x,cod);
if
x>length(ss)
then x:=length(ss);
ss:=copy(ss,x+1,length(ss));
for
i:=1 to x do
ss:=ss+'#';
end;
procedure r_s(s:string);
var x,cod,i:integer;
begin
delete(s,1,3);
val(s,x,cod);
if
x>length(ss)
then x:=length(ss);
for
i:=1 to x do
ss:='#'+ss;
ss:=copy(ss,1,length(ss)-x);
end;
procedure l_c(s:string);
var x,cod,i:integer;
begin
delete(s,1,3);
val(s,x,cod);
x:=x
mod length(ss);
ss:=copy(ss,x+1,length(ss))+copy(ss,1,x);
end;
procedure r_c(s:string);
var x,cod,i:integer;
begin
delete(s,1,3);
val(s,x,cod);
x:=x
mod length(ss);
ss:=copy(ss,length(ss)-x+1,x)+copy(ss,1,length(ss)-x);
end;
procedure m_c(s:string);
var st,l,cod,i:integer;
save:string;
begin
delete(s,1,3);
val(copy(s,1,1),st,cod);
val(copy(s,2,1),l,cod);
save:=ss;
ss:=copy(ss,st,l);
if
s[4]='L'
then l_c(' '+s[3])
else r_c(' '+s[3]);
for
i:=1 to l do
save[i+st-1]:=ss[i];
ss:=save;
end;
procedure rev(s:string);
var st,l,cod,i:integer;
c:char;
begin
delete(s,1,4);
val(copy(s,1,1),st,cod);
val(copy(s,2,1),l,cod);
for
i:=1 to l div 2 do
begin
c:=ss[i+st-1];
ss[i+st-1]:=ss[st+l-i];
ss[st+l-i]:=c;
end;
end;
procedure prel(s:string);
var aux:string;
i:byte;
begin
for
i:=length(s) downto 1 do
if
s[i]='/'
then break;
ss:=copy(s,i+1,length(s));
delete(s,i+1,length(s));
repeat
i:=pos('/',s);
aux:=copy(s,1,i-1);
delete(s,1,i);
case aux[1] of
'L':case aux[2] of
'S':l_s(aux);
'C':l_c(aux);
end;
'R':case aux[2] of
'S':r_s(aux);
'C':r_c(aux);
'E':rev(aux);
end;
'M':m_c(aux);
end;
until s='';
writeln(ss);
end;
procedure citire;
var s:string;
begin
assign(input,'strings.in');
reset(input);
while not eof do
begin
readln(s);
prel(s);
end;
close(input);
end;
begin
assign(output,'strings.out');
rewrite(output);
citire;
close(output);