`
#include <iostream>
using namespace std;
const int M=100000+10 ;
int e[M],ne[M],idx,head;
void init()
{
head=-1;
idx=0; //默认下标从0开始
}
void insert_my(int x)
{
e[idx]=x;
ne[idx]=head;
head=idx++;
}
void remove_my(int k)
{
ne[k-1]=ne[ne[k-1]];
}
void add(int k,int x)
{
e[idx]=x;
ne[idx]=ne[k-1];
ne[k-1]=idx++;
}
int main()
{
int m,x,k;
cin>>m;
init();
for(int i=0; i<m; i++)
{
char ch;
cin>>ch;
if(ch=='H')
{
cin>>x;
insert_my(x);
}
else if(ch=='D')
{
cin>>k;
if(k==0) head=ne[head];
else remove_my(k);
}
else
{
cin>>k>>x;
add(k,x);
}
}
for(int j=head; j!=-1; j=ne[j])
{
cout<<e[j]<<' ';
}
return 0;
}
`