import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) { // 注意 while 处理多个 case
String str = in.next(); // 读取输入的字符串
int n = in.nextInt(); // 读取操作指令的数量
String[] instruction = new String[n]; // 存储操作指令的数组
for (int i = 0; i < n; i++) {
instruction[i] = in.next(); // 逐个读取操作指令
}
for (int i = 0; i < n; i++) {
int start = instruction[i].charAt(1) - '0'; // 获取操作指令中的起始位置
int len = instruction[i].charAt(2) - '0'; // 获取操作指令中的长度
if (instruction[i].charAt(0) == '1') {
// 如果是替换操作
String replace = instruction[i].substring(3); // 获取替换的字符串
String ss = str.substring(0, start) + replace + str.substring(start + len); // 执行替换操作
System.out.println(ss); // 输出结果
str = ss; // 更新原始字符串
} else {
// 如果是反转操作
String replace = new StringBuilder(str.substring(start, start + len)).reverse().toString(); // 获取反转后的字符串
String ss = str.substring(0, start) + replace + str.substring(start + len); // 执行反转操作
System.out.println(ss); // 输出结果
str = ss; // 更新原始字符串
}
}
}
}
}