#include<iostream>
using namespace std;
struct number {
int num;
number* next;
};
void print(number* head)
{
number* p = head;
while (p->next != nullptr)
{
p = p->next;
cout << p->num << " ";
}
cout << endl;
}
number* search(number* head,int n)
{
number* p = head->next;
while (p != nullptr)
{
if (p->num == n)
{
if (p->next == nullptr)
{
cout << 0 << endl;
}
else
{
cout << p->next->num << endl;
}
}
p = p->next;
}
return nullptr;
}
void insert(number* head, int x, int n)
{
number* newpart = new number;
newpart->num = n;
newpart->next = nullptr;
number* p = head;
while (p->next != nullptr)
{
if (p->next->num == n)
{
newpart->next = p->next->next;
p->next->next = newpart;
break;
}
p = p->next;
}
}
void thedelete(number* head, int n)
{
number* p = head;
while (p->next != nullptr)
{
if (p->next->num == n)
{
number* temp = p->next;
p->next = p->next->next;
delete temp;
break;
}
p = p->next;
}
}
int main()
{
int count;
cin >> count;
number* head = new number;
number* p=nullptr, * newpart=nullptr;
while (count)
{
int op;
cin >> op;
if (op == 1)
{
int n, x;
cin >> n >> x;
insert(head, x, n);
print(head);
}
else if (op == 2)
{
int n;
cin >> n;
search(head,n);
}
else if (op== 3)
{
int n;
cin >> n;
thedelete(head, n);
print(head);
}
op--;
}
return 0;
}