時間制限 : sec, メモリ制限 : KB
English / Japanese  

Note

C++
 
JAVA
 
JavaScript
 

文字列変換


文字列 $str$ に対して、与えられた命令の列を実行するプログラムを作成してください。命令は以下の操作のいずれかです:

  • print a b: $str$ の a 文字目から b 文字目までを出力する。
  • reverse a b: $str$ の a 文字目から b 文字目までを逆順にする。
  • replace a b p: $str$ の a 文字目から b 文字目までを p に置き換える。

ここでは、文字列 $str$ の最初の文字を 0 文字目とします。

Input

1 行目に文字列 $str$ が与えられます。$str$ は英小文字のみ含みます。2 行目に命令の数 $q$ が与えられます。続く $q$ 行に各命令が上記の形式で与えられます。

Output

print 命令ごとに文字列を1行に出力してください。

Constraints

  • $1 \leq str の長さ \leq 1000$
  • $1 \leq q \leq 100$
  • $0 \leq a \leq b < str の長さ$
  • replace 命令では $b - a + 1 = 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