Problem:
MathJax.Hub.Config({ tex2jax: { inlineMath: [["$","$"], ["\\(","\\)"]], processEscapes: true }});

Transformation

Write a program which performs a sequence of commands to a given string $str$. The command is one of:

print a b: print from the a-th character to the b-th character of $str$

reverse a b: reverse from the a-th character to the b-th character of $str$

replace a b p: replace from the a-th character to the b-th character of $str$ with p

Note that the indices of $str$ start with 0.

Input

In the first line, a string $str$ is given. $str$ consists of lowercase letters. In the second line, the number of commands q is given. In the next q lines, each command is given in the above mentioned format.

Output

For each print command, print a string in a line.

Constraints

$1 \leq $ length of $str \leq 1000$

$1 \leq q \leq 100$

$0 \leq a \leq b < $ length of $str$

for replace command, $b - a + 1 = $ length of $p$

Sample Input 1

abcde
3
replace 1 3 xyz
reverse 0 2
print 1 4

Sample Output 1

xaze

Sample Input 2

xyz
3
print 0 2
replace 0 2 abc
print 0 2

Sample Output 2

xyz
abc

Solution in JAVA (judge verdict: Wrong Answer)

public class Main{
  public void run(java.io.InputStream in, java.io.PrintStream out){
    java.util.Scanner sc = new java.util.Scanner(in);
/*answer*/
    String str, call, p;
    int q, a, b;
    char[] stch, pch;
    int i, j, n, pn;
    char tmp;

    str = sc.next();
    q = sc.nextInt();
    n = str.length();
    stch = new char[n];
    for(i = 0;i < n;i++){
      stch[i] = str.charAt(i);
    }

    for(i = 0;i < q;i++){
      call = sc.next();
      if("replace".equals(call)){
        a = sc.nextInt();
        b = sc.nextInt();
        p = sc.next();

        pn = p.length();
        pch = new char[pn];
        for(j = 0;j < pn;j++){
          pch[j] = p.charAt(j);
        }

        for(j = a;j <= b;j++){
          stch[j] = pch[j - a];
        }
      }else if("reverse".equals(call)){
        a = sc.nextInt();
        b = sc.nextInt();
        for(j = 0;j < (b - a) / 2;j++){
          tmp = stch[a + j];
          stch[a + j] = stch[b - j];
          stch[b - j] = tmp;
        }
      }else if("print".equals(call)){
        a = sc.nextInt();
        b = sc.nextInt();
        for(j = a;j <= b;j++){
          System.out.print(stch[j]);
        }
        System.out.println();
      }
    }

    sc.close();
  }
  public static void main(String[] args){
    (new Main()).run(System.in, System.out);
  }
}