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

typedef struct _node{
	struct _node *prev;
	struct _node *next;

	int val;

}Node;


void insert(Node **head, Node **tail,  int val ){

	Node *ptr;


	ptr = (Node*)malloc(sizeof(Node));
	ptr->val = val;

	ptr->prev = NULL;
	ptr->next = *head;

	if( *head != NULL ) {
		(*head)->prev = ptr;
		*head = ptr;
	}else{
		*head = ptr;
		*tail = ptr;
	}
	
}

void delete_first( Node **head, Node **tail ){
	
	Node *ptr = *head;

	if( ptr->next != NULL ){
		ptr->next->prev = NULL;
		*head = ptr->next;
	}else{
		*head = NULL;
		*tail = NULL;
	}

	free(ptr);
}


void delete_last( Node **head, Node **tail ){

	Node *ptr = *tail;

	if( ptr->prev != NULL ){
		ptr->prev->next = NULL;
		*tail = ptr->prev;
	}else{
		*head = NULL;	
		*tail = NULL;
	}
	free( ptr );
}

void delete(Node **head, Node **tail, int val ){

	Node *ptr = *head;
	if(*head == NULL) return;

	//Seek for matching node
	while( ptr->next!=NULL && ptr->val!=val  )
		ptr = ptr->next;

	// delete
	if( ptr->val == val ){

		if( ptr->next == NULL ){
			delete_last(head, tail);
		}else if( ptr->prev == NULL ){
			delete_first(head, tail);
		}else{
			ptr->prev->next = ptr->next;
			ptr->next->prev = ptr->prev;
			free(ptr);
		}
	}
}





void print( Node * node ){

		
	if(node==NULL) return;
	
	do{
		printf( "%d%c", node->val, (node->next!=NULL)?' ':'\n' );
		node  = node->next;
	}while( node != NULL  );
}

int main( ){

	int i, n, val;
	char cmd[33];
	Node *head=NULL, *tail=NULL;
	

	scanf( "%d\n", &n );
	
	for( i=0; i<n; i++ ){
		fgets( cmd, sizeof(cmd), stdin );

		if( cmd[0]=='d' && cmd[6]=='F' ){
			delete_first( &head, &tail );
		}
		else if( cmd[0]=='d' && cmd[6]=='L' ){
			delete_last( &head, &tail );
		}
		else if( cmd[0] == 'd' ){
			val = atoi( &cmd[7] );
			delete( &head, &tail, val );
		}
		if( cmd[0]=='i' ){
			val = atoi( &cmd[7] );
			insert( &head, &tail, val );
		}
	}

	print(head);
	
	return 0;
}