#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void strcut(char *str, int beg, int end)
{
int i = beg;
int j = 0;
char *str2 = (char *)malloc((110) * sizeof(char));
for (; i <= end + beg - 1; i++, j++)
{
str2[j] = str[i];
}
str2[j] = '\0';
strcpy(str, str2);
free(str2);
}
void strinsert(char *str, char *str2, int beg)
{
int j = 0;
char *str3 = (char *)malloc((110) * sizeof(char));
for (int i = 0; i < beg; i++)
{
str3[i] = str[i];
}
str3[beg] = '\0';
int i = beg;
j = 0;
for (; str2[j]!= '\0'; j++, i++)
{
str3[i] = str2[j];
}
str3[i] = '\0';
int k = beg;
for (; str[k]!= '\0'; i++, k++)
{
str3[i] = str[k];
}
str3[i] = '\0';
strcpy(str, str3);
free(str3);
}
int main()
{
int n, N;
scanf(" %d", &n);
getchar();
char *str = (char *)malloc((101) * sizeof(char));
char str0[n][101];
gets(str);
for (int i = 1; i <= n; i++)
{
int beg, end;
scanf(" %d", &N);
if(N == 1)
{
char *str2 = (char *)malloc((110) * sizeof(char));
getchar();
gets(str2);
strcat(str, str2);
strcpy(str0[i-1], str);
free(str2);
}
else if(N == 2)
{
scanf(" %d%d", &beg, &end);
strcut(str, beg, end);
strcpy(str0[i-1], str);
}
else if(N == 3)
{
char *str3 = (char *)malloc((110) * sizeof(char));
scanf("%d", &beg);
getchar();
gets(str3);
strinsert(str, str3, beg);
strcpy(str0[i-1], str);
free(str3);
}
else if(N == 4)
{
int m;
char str8[100];
char *str4 = (char *)malloc((110) * sizeof(char));
getchar();
gets(str4);
char *ret = strstr(str, str4);
if(ret == NULL)
m = -1;
else
{
m = ret - str;
}
sprintf(str8, "%d", m);
strcpy(str0[i-1], str8);
}
}
free(str);
for(int j = 0; j < n - 1; j++)
{
printf("%s\r\n", str0[j]);
}
printf("%s", str0[n - 1]);
return 0;
}