//C++版代码
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
string s;
int n;
cin >> s >> n;
while (n--) {
string command;
cin >> command;
int flag = command[0] - '0';
int i = command[1] - '0';
int len = command[2] - '0';
if (flag) s.replace(i, len, command.substr(3));
else reverse(s.begin() + i, s.begin() + i + len);
cout << s << endl;
}
return 0;
}
//Java版代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
int n = sc.nextInt();
while (n-- > 0) {
String command = sc.next();
int flag = command.charAt(0) - '0';
int i = command.charAt(1) - '0';
int len = command.charAt(2) - '0';
if (flag == 1) s = s.substring(0,
i) + command.substring(3) + s.substring(i + len);
else s = s.substring(0, i) + reverse(s.substring(i,
i + len)) + s.substring(i + len);
System.out.println(s);
}
}
private static String reverse(String s) {
StringBuilder sb = new StringBuilder(s);
for (int i = 0; i < sb.length() / 2; i++) {
char temp = sb.charAt(i);
sb.setCharAt(i, sb.charAt(sb.length() - 1 - i));
sb.setCharAt(sb.length() - 1 - i, temp);
}
return sb.toString();
}
}
//Python版代码
s = input()
for _ in range(int(input())):
command = input()
flag, i, len = map(int, command[:3])
if flag == 0:
s = s[:i] + s[i:i + len][::-1] + s[i + len:]
else:
s = s[:i] + command[3:] + s[i + len:]
print(s)