#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct no{
    int data;
    struct no *next;
}ListNode;

ListNode*removeElem(int x);
void STLPrint(ListNode*ps);
void STLinsert(ListNode**ps,int x,int y);
void STLdelet(ListNode**ps,int x);
int main()
{
   ListNode*head = NULL;
    int s1,s2,s3;
    char input[10]={0};
    int count = 0;
    scanf("%d",&count);
    while(count--)
    {
        scanf("%s",input);
        if(strcmp(input,"insert")==0)
        {
            scanf("%d%d",&s1,&s2);
            STLinsert(&head,s1,s2);
        }
        else if(strcmp(input,"delete")==0)
        {
           scanf("%d",&s3);
            STLdelet(&head,s3);
        }
    }
    STLPrint(head);
}
ListNode*removeElem(int x)
{
    ListNode*newNode = (ListNode*)malloc(sizeof(ListNode));
    if(newNode==NULL)
    {
         perror("malloc");
         exit(-2);
    }
    newNode->data = x;
    newNode->next = NULL;
    return newNode;
}

void STLPrint(ListNode*ps)
{
    ListNode*cur = ps;
     if(ps==NULL)
     {
         printf("NULL");
     }
     while(cur)
     {
         printf("%d ",cur->data);
          cur = cur->next;
     }

}

void STLinsert(ListNode**ps,int x,int y)
{
    ListNode*cur = *ps;
    ListNode*prev = NULL;

    while(cur)
    {
        if(cur->data==x)
        break;
         prev = cur;
         cur = cur->next;
    }
    if(!prev)
    {
        ListNode*newNode = removeElem(y);
        newNode->next = *ps;
        *ps = newNode;
    }
    else{
      ListNode*newNode = removeElem(y);
      prev->next = newNode;
      newNode->next = cur;
   }

}

void STLdelet(ListNode**ps,int x)
{
     ListNode*cur = *ps;
     ListNode*prev = NULL;
     while(cur&&cur->data!=x)
     {
         prev = cur;
         cur = cur->next;
     }
     if(cur==NULL)
     {
          return;
     }
     if(prev==NULL)
     {
         *ps = cur->next;
     }
     else{
         prev->next = cur->next;
     }
     free(cur);
}