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)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

	public static void main(String[] args) throws IOException {

		BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

		// ?????????
		String str = input.readLine();

		// ????????°
		String instruction_q = input.readLine();

		int instruction_q_num = Integer.parseInt(instruction_q);

		StringBuilder change_string = new StringBuilder(str);

		// ????????°??????????????°?????????.?????°str????????????????????£?????????????????????
		for (int instruction_spot = 0; instruction_spot < instruction_q_num; instruction_spot++) {

			// ??????????????°?????\???
			String instruction_line = input.readLine();

			String[] instruction_array = instruction_line.split(" ");

			// ?????????
			String instruction_statement = instruction_array[0];

			// a??????
			int element_a = Integer.parseInt(instruction_array[1]);

			// b??????
			int element_b = Integer.parseInt(instruction_array[2]);



			if (instruction_statement.equals("replace")) {

				// replace??¨?°???????
				String small_strings = instruction_array[3];

				// a??????b?????§???change_string???small_strings????????´??????.b????????????????????????????????????????????????
				change_string.replace(element_a, element_b+1, small_strings);

				System.out.println(change_string);

				// ????????????????¨????????????????????????????????????????
			} else if (instruction_statement.equals("reverse")) {

				// ????????¨?????°
				String change_word = change_string.substring(element_a, element_b);

				// ???????????°???????????????????????°
				StringBuilder SB_extraction_word = new StringBuilder(change_word);

				// ?????????
				SB_extraction_word.reverse();

				String extraction_word = SB_extraction_word.toString();
				
				//b????????????????????????????????????????????????
				change_string.replace(element_a, element_b+1, extraction_word);

				System.out.println(change_string);

			} else {

				change_string.substring(element_a,element_b);

				System.out.println(change_string);
			}
		}

	}

}