#include struct Node{ int prev, next; }; Node map[100000]; int main() { map[0].prev = 1; map[0].next = 1; map[1].prev = 0; map[1].next = 0; int n; int cmd, x, y; scanf("%d", &n); while (n) { scanf("%d %d", &cmd, &x); switch(cmd) { case 1: { scanf("%d", &y); map[y].prev = x; map[y].next = map[x].next; map[x].next = y; map[map[y].next].prev = y; break; } case 2: { printf("%d\n", map[x].next); break; } case 3: { map[map[x].prev].next = map[x].next; map[map[x].next].prev = map[x].prev; break; } } n--; } int cur = map[0].next; while (cur != 0) { printf("%d\n", cur); cur = map[cur].next; } return 0; }