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

struct node{
	int key;
	struct node *next;
	struct node *prev;
};

typedef struct node *NodePointer;

NodePointer nil;

NodePointer listSerch(int key){
	NodePointer t = nil->next;
	if(t == nil){
		return nil;
	}
	while(1){
		if(t->key == key){
			return t;
		}
		if(t->next == nil){
			return nil;
		}
		t = t->next;
	}
	
}

void init(){
	nil = malloc(sizeof(struct node));
	nil->next = nil;
	nil->prev = nil;
}

void printList(){
	NodePointer cur = nil->next;
	int isf = 1;
	while(1){
		if(cur == nil){
			break;
		}
		if(isf == 0){
			printf(" ");
		}
		printf("%d", cur->key);
		cur = cur->next;
		isf = 0;
	}
	printf("\n");
}

void deleteNode(NodePointer t){
	t->prev->next = t->next;
	t->next->prev = t->prev;
	free(t);
}

void deleteFirst(){
	NodePointer t = nil->next;
	if(t == nil){
		return;
	}
	deleteNode(t);
}

void deleteLast(){
	NodePointer t = nil->prev;
	if(t == nil){
		return;
	}
	deleteNode(t);
}

void delete(int key){
	NodePointer t = nil->next;
	t = listSerch(key);
	if(t == nil){
		return;
	}
	deleteNode(t);
}

void insert(int key){
	NodePointer x;
	x = malloc(sizeof(struct node));
	x->key = key;
	x->next = nil->next;
	x->prev = nil;
	x->next->prev = x;
	nil->next = x;
}


int main(int argc, char **argv)
{
	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 ( com[0] == 'i' ){
			scanf("%d", &key);
			insert(key); 
			np++; 
			size++;
		}
		else if ( com[0] == 'd' ){
			if (strlen(com) > 6){
				if ( com[6] == 'F' ){
					deleteFirst();
				} 
				else if ( com[6] == 'L' ){
					deleteLast();
				}
			}
			else{
				scanf("%d", &key);
				delete(key); 
				nd++; 
			}
			size--;
		}
	}

	printList();
	return 0;
}
