#include<iostream>
using namespace std;
const int N=100010;
//head头结点下标
//e[i]值
//ne[i]下一个位置的地址
//idx当前已经用到了哪个点
int head, e[N],ne[N],idx;
void init(){
head=-1;
idx=0;
}
void add_to_head(int x)//插到head
{
e[idx]=x;
ne[idx]=head;//以前head指针是指1,现在idx指针指1
head=idx++;//现在head指
// idx++;
}
void add(int k,int x)//插到下标为k后面
{
e[idx]=x;
ne[idx]=ne[k];//idx现在要指的
ne[k]=idx++;//k现在要指的
// idx++;
}
void remove(int k)//删k的下一个
{
ne[k]=ne[ne[k]];
}
int main()
{
int m;
cin>>m;
init();
while(m--)
{
int x,k;
char op;
cin>>op;
if(op=='H')
{
cin>>x;
add_to_head(x);
}
else if(op=='D')
{
cin>>k;
if(k==0)head=ne[head];//2空就k指向下一个]不加这一句下个k-1就可能-1了
remove(k-1);//1一号点是第二个插入的点,第k个插入的点下标就是k-1
}
if(op=='I')
// else
{
cin>>k>>x;
add(k-1,x);//k-1
}
}
for(int i=head;i!=-1;i=ne[i])cout<<e[i]<<' ';
cout<<endl;
return 0;
}