1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<ext/rope>
5 using namespace std;
6 using namespace __gnu_cxx;
7
8 rope<char> a,b,t;
9 int n,pos,k,len;
10 char ch[10],s[2000000],str[2000000];
11
12 int main()
13 {
14 scanf("%d",&n);
15 for(int i=1;i<=n;i++)
16 {
17 scanf("%s",ch);
18 switch(ch[0])
19 {
20 case 'M':
21 scanf("%d",&pos);
22 break;
23 case 'I':
24 scanf("%d",&k);
25 len=a.length();
26 for(int i=0;i<k;i++)
27 {
28 s[i]=getchar();
29 while(s[i]=='\n')
30 s[i]=getchar();
31 str[k-i-1]=s[i];
32 }
33 str[k]=s[k]=0;
34 a.insert(pos,s);
35 b.insert(len-pos,str);
36 break;
37 case 'D':
38 scanf("%d",&k);
39 len=a.length();
40 a.erase(pos,k);
41 b.erase(len-pos-k,k);
42 break;
43 case 'R':
44 scanf("%d",&k);
45 len=a.length();
46 t=a.substr(pos,k);
47 a=a.substr(0,pos)+b.substr(len-pos-k,k)+a.substr(pos+k,len-pos-k);
48 b=b.substr(0,len-pos-k)+t+b.substr(len-pos,pos);
49 break;
50 case 'G':
51 printf("%c\n",a[pos]);
52 break;
53 case 'P':
54 pos--;
55 break;
56 case 'N':
57 pos++;
58 break;
59 }
60 }
61 return 0;
62 }