两极反转
题号:NC231683
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

你有一个字符串,有三种操作

1. l, r 反转[l,r]区间的字符
2. p, str 在第p个字符后插入字符串str
3. l r 询问当前字符串子串s[l,r]是什么

提示:反转"abcde"中的[2,4],结果为"adcbe"。

输入描述:

第一行两个整数 n,m 表示初始字符串长度,操作数。

第二行一个字符串,表示初始字符串

下面 m 行每行包含3个整数或字符串,表示一个操作,具体如下:
1. 1 l r
2. 2 p str
3. 3 l r

保证操作合法。,字符为小写英文字母。
字符串从下标1开始, s 为当前串,

输出描述:

对于每个操作 3 ,输出一行字符串
示例1

输入

复制
5 5
abcde
1 2 3
3 1 3
2 2 lzqnl
2 3 wzjbn
3 1 10

输出

复制
acb
aclwzjbnzq