#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int n;
scanf("%d", &n);
char arr[100];
getchar();
gets(arr);
for(int i = 1; i <= n; ++i) {
int select;
scanf("%d", &select);
switch(select) {
case 1: {
char arr1[100];
getchar();
gets(arr1);
strcat(arr, arr1);
printf("%s\n", arr);
break;
}
case 2: {
int ind, cnt;
scanf("%d%d", &ind, &cnt);
char arr2[100];
strcpy(arr2, arr);
memset(arr, 0, sizeof(arr));
for(int j = ind; j < ind + cnt; ++j) {
arr[j - ind] = arr2[j];
}
printf("%s\n", arr);
break;
}
case 3: {
int cnt;
scanf("%d", &cnt);
char arr3[100];
getchar();
gets(arr3);
char arr1[100];
char arr2[100];
memset(arr2, 0, sizeof(arr2));
for(int i = 0; i < strlen(arr) - cnt; ++i) {
arr2[i] = arr[cnt + i];
}
strncpy(arr1, arr, cnt);
strcat(arr1, arr3);
strcat(arr1, arr2);
strcpy(arr, arr1);
printf("%s\n", arr);
break;
}
case 4: {
char arr1[100];
getchar();
gets(arr1);
int ind = 0, j = 0, i = 0;
for (i = 0; i < strlen(arr); ++i) {
if(arr[i] == arr1[0]) {
ind = i;
for(j = 1; j < strlen(arr1); ++j) {
if(arr[j + i] != arr1[j]) {
break;
}
}
if(j >= strlen(arr1)) {
printf("%d\n", ind);
break;
}
}
}
if(i >= strlen(arr)) {
printf("%d\n", -1);
}
break;
}
}
}
return 0;
}