#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//#define MAX 1000000
//#define NIL -1

typedef struct node{
  int key;
  struct node *prev;
  struct node *next;
}Node;
Node *nil;
Node *A;
void init(void);
void Insert(int);
Node *Search(int);
void Delete(Node *);
void DeleteFirst(void);
void DeleteLast(void);

int main(){
  int i,n,k,sum=0;
  char s[10];
  
  init();
  scanf("%d",&n);
  for(i=0;i<n;i++){
    scanf("%s%d",s,&k);
    if(s[0]=='i'){
      Insert(k);
      sum++;
    }
    else if(s[0]=='d'){
      if(strlen(s)>6){
	if(s[6]=='F'){
	  DeleteFirst();
	}
	else if(s[6]=='L'){
	  DeleteLast();
	}
      }
      else{
	Delete(Search(k));
      }
      sum--;
    }
  }
  for(A=nil->next ; A->key != nil->key ; A=A->next){
    if(A != nil->next)printf(" ");
     printf("%d",A->key);
   }
   printf("\n");
   free(A);
   free(nil);
   return 0;
}
void init(void){//????????????
  nil=(Node *)malloc(sizeof(Node));
  nil->next=nil;
  nil->prev=nil;
}
void Insert(int key){//?????\
  A=(Node *)malloc(sizeof(Node));
  A->key=key;
  A->next=nil->next;
  nil->next->prev=A;
  nil->next=A;
  A->prev=nil;
}
Node *Search(int key){
  Node *d=nil->next;
  while(d!=nil && d->key!=key){
    d=d->next;
  }
  return d;
}
void Delete(Node *t){//??????
  if(t==nil) return;
  t->prev->next=t->next;
  t->next->prev=t->prev;
  free(t);
}
void DeleteFirst(void){
  Node *x;
  x=nil->next;
  nil->next=x->next;
  x->next->next=nil;
  free(x);
}
void DeleteLast(void){
  Node *x;
  x=nil->prev;
  nil->prev=x->prev;
  nil->prev=nil;
  free(x);
}