#include<iostream>
#include<cmath>
#include<vector>
#include<algorithm>
#include<cstring>
#include<cstring>
#include<cstdio>
using namespace std;
int main()
{
int q;char str[10000];int len;//len指向最后一位数字
cin>>q;
scanf("%s",str);
while(q--){
int b;
cin>>b;
if(b==1){
char ss[100];
scanf("%s",ss);
len=strlen(str)+strlen(ss);
int len1=0;
//从str后一位开始
for(int i=strlen(str);i<=len;i++){
str[i]=ss[len1++];
}
for(int i =0;i<=len;i++){
printf("%c",str[i]);
}
printf("\n");
}
else if(b==2){
int k1,k2;
cin>>k1>>k2;
//从k1开始一共k2个字符 覆盖str前k2
for(int i=0;i<k2;i++){
str[i]=str[k1++];
}
len =k2-1;//指针最后一位
for(int i=0;i<=len;i++){
printf("%c",str[i]);
}
printf("\n");
}
else if(b==3){//k1前插字符串ss
int k1;char ss[100];
cin>>k1;
scanf("%s",ss);
char cu[100];int len1=0;//cu指针,
//k1之后存入cu
for(int i=k1;i<=len;i++){
cu[len1++]=str[i];
}
int len2=0;//ss指针
for(int i=k1;i<k1+strlen(ss);i++){
str[i]=ss[len2++];
}
len2=0;//新cu指针
for(int i=k1+strlen(ss);i<k1+strlen(ss)+len1;i++){
str[i]=cu[len2++];
}
len =len +strlen(ss);
for(int i=0;i<=len;i++){
printf("%c",str[i]);
}
printf("\n");
}
else{
char ss[100];
scanf("%s",ss);
int flag=-1;//不为-1则输出位置
for(int i=0;i<=len;i++){
if(str[i]==ss[0]){
for(int j=0;j<strlen(ss);j++){
if(str[i+j]!=ss[j]){
break;
}
if(j==strlen(ss)-1){
flag=i;
}
}
}
if(flag!=-1)break;
}
if(flag!=-1)printf("%d\n",flag);
else printf("-1\n");
}
}
return 0;
}
#2输入
6
aaaaaaaaaaaaaaaaaaaaaaa
4 aaaaaaaa
1 aaaaa
4 b
2 2 3
3 0 fafafafa
4 fafa
输出
0
aaaaaaaaaaaaaaaaaaaaaaaaaaaa
-1
aaa
fafafafaaaa
0
#4无数据
#2我的输出一样为什么不能过