#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 1e5 + 10;
int cur;//是cur当前空结点,head头指针
int e[N], L[N],R[N];//e[]存储链表,L[],R[]分别为左右指针,相当于struct{ }结构体中的左指针(指向左边)和右指针(指向右边)
void Insert(int k,int x)
{
e[cur] = x;//先将数据存入一个新的结点中;
L[cur] = k;
R[cur] = R[k];
L[R[k]] = cur;
R[k] = cur;
cur++;//开辟新的结点;
}
void Delete(int k)
{
L[R[k]] = L[k];
R[L[k]] = R[k];
}
int main()
{
int m;
L[1] = 0;//表示最左端
R[0] = 1;//表示最右端
cur = 2;//表示已经使用了
cin >> m;
while (m--)
{
string op;
cin >> op;
int k, x;//K为位置,X为数据
if (op == "L")
{
cin >> x;
Insert(0, x);
}
else if (op == "R")
{
cin >> x;
Insert(L[1], x);
}
else if (op == "D")
{
cin >> k;
Delete(k+1);
}
else if (op == "IL")
{
cin >> k >> x;
Insert(L[k+1], x);
}
else
{
cin >> k >> x;
Insert(k+1, x);
}
}
for (int i = R[0]; i !=1;i = R[i])
{
cout << e[i] << ' ';
}
return 0;
}