c,s[2000],l,p1,p2,p3;
#define f1(a,b)for(int i=a;i<b;i++)
#define f1s(a,b)for(int i=a;i>b;i--)
#define f2(a)for(int j=0;j<a;j++)
_Bool judge(a,b){
return(isdigit(a)&&isdigit(b))||(isalpha(a)&&isalpha(b));
}
pa(a,b){
if(p1==1){
if(p3==1)
f1(a+1,b)
f2(p2)
s[l++]=i;
else
f1s(b-1,a)
f2(p2)
s[l++]=i;
} else {
if(p1==2){
if(p3==1)
f1(a+1+'A'-'a',b+'A'-'a')
f2(p2)
s[l++]=i;
else
f1s(b-1+'A'-'a',a+'A'-'a')
f2(p2)
s[l++]=i;
} else {
f2(p2*(b-1-a-1+1))
s[l++]='*';
}
}
s[l++]=b;
}
pd(a,b){
if(p1^3){
if(p3==1)
f1(a+1,b)
f2(p2)
s[l++]=i;
else
f1s(b-1,a)
f2(p2)
s[l++]=i;
}
else
f2(p2*(b-a-1))
s[l++]='*';
s[l++]=b;
}
main(){
scanf("%d%d%d",&p1,&p2,&p3);
while(read(0,&c,1)){
if(c=='-'){
char t;read(0,&t,1);
if(t<=s[l-1]||!judge(t,s[l-1])){
s[l++]='-',s[l++]=t;
continue;
} else {
if(isalpha(t))
pa(s[l-1],t);
else if(isdigit(t))
pd(s[l-1],t);
}
} else {
if(isalpha(c)||isdigit(c))
s[l++]=c;
}
}
for(int i=0;i<l;i++)
putchar(s[i]);
}