#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct node{
  int key;
  struct node *prev, *next;
}Node;

void init();
void insert(int key);
Node * listSearch(int key);
void deleteNode(Node *t);
void deleteFirst();
void deleteLast();
void deletekey(int key);

Node *nil;

void init()
{
  nil = (Node *)malloc(sizeof(Node));
  nil->next = nil;
  nil->prev = nil;
}

void insert(int key)
{
  Node *x =(Node *)malloc(sizeof(Node));
  x->key = key;

  x->next = nil->next;
  nil->next->prev = x;
  nil->next = x;
  x->prev = nil;
}


Node* listSearch(int key)
{
  Node *cur = nil->next;
  while( cur != nil && cur->key != key){
    cur = cur->next;
  }
  return cur;
}

void deleteNode(Node *t){
  if(t == nil) return;
  t->prev->next = t->next;
  t->next->prev = t->prev;
  free(t);
}

void deleteFirst(){
  deleteNode(nil->next);
}

void deleteLast(){
  deleteNode(nil->prev);
}

void deletekey(int key){
  deleteNode(listSearch(key));
}


int main(){
  int key, n, i;
  int size = 0;
  char com[20];
  int np=0, nd=0;

  scanf("%d", &n);

  init();

  for(i=0; i<n; i++){
    scanf("%s", com);
    if(strcmp(com, "insert") == 0){
      scanf("%d", &key);
      //printf("key=%d\n", key);
      insert(key);
      np++;
      size++;
    }

    else if(strcmp(com, "delete") == 0){
      scanf("%d", &key);
      // printf("key=%d\n", key);
      deletekey(key);
      nd++;
      size--;
    }

    else if(strcmp(com, "deleteFirst") == 0){
      deleteFirst();
      size--;
    }
    
    else{
      deleteLast();
      size--;
    }
    //printf("i=%d\n", i);
  }

  Node *cur = nil->next;
  int isf = 0;
  while(1){
    if(cur == nil){
      break;
    }
    if(isf++ > 0){
      printf(" ");
    }

    printf("%d", cur->key);
    cur = cur->next;
  }
  printf("\n");

  return 0;
}