#include <iostream>
using namespace std;
class node{//---------节点(一个数字,和一个指向下一节点的指针,指向空表示其为尾节点
public:
int n;
node* next;
node(int x){
n = x;
next = nullptr;
}
};
class linked_list{
public:
node* head = nullptr;
void insert(int x, int y){
node* temp = new node(y);
if (head == nullptr)//------如果链表中没有元素
head = temp;
else{
node* dd = head;
node* tt = head;//-------tt去找x的位置,dd指向它的上一个位置
while (tt->next != nullptr && tt->n != x){
dd = tt;
tt = tt->next;
}
if(tt == head && tt->n == x){//--------情况1,x就是第一个元素
head = temp;
temp->next = tt;
}
else if (tt->n == x){//--------情况2,tt找到x了且x不是的一个元素
dd->next = temp;
temp->next = tt;
}
else if (tt->next == nullptr){//-------情况3,没找到x
tt->next = temp;
}
}
}
void del(int x){
node* tt = head;
if (head == nullptr);//--------为空则,不操作
else if(tt->n == x){//------情况1,第一个就是x
head = tt->next;
delete tt;
}
else{
while(tt->next != nullptr && tt->next->n != x){//-------找x的上一个元素
tt = tt->next;
}
if (tt->next->n == x){//------找到了
node* temp = tt;
node* temp1 = tt->next;
tt = tt->next->next;
temp->next = tt;
delete temp1;
}//---------没找到不操作
}
}
void print(){
if (head == nullptr) cout << "NULL" << endl;
else{
while(head->next != nullptr){
cout << head->n << " ";
head = head->next;
}
cout << head->n;
}
}
};
int main() {
int n, x, y;
string s;
cin >> n;
linked_list li;
for (int i = 0; i < n; i++){
cin >> s;
if (s == "insert"){
cin >> x >> y;
li.insert(x, y);
}
else{
cin >> x;
li.del(x);
}
}
li.print();
}
// 64 位输出请用 printf("%lld")