#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#define MAX 100

// Check if a string is valid (only alphabets allowed)
int isValidName(char *name) {
    for (int i = 0; name[i] != '\0'; i++) {
        if (!isalpha(name[i]))
            return 0;
    }
    return 1;
}

int main() {
    int n;
    if (scanf("%d", &n) != 1 || n <= 0 || n > MAX) {
        printf("Invalid input\n");
        return 0;
    }

    char *deque[MAX];  // array of string pointers
    int front = MAX / 2, rear = MAX / 2 - 1; // center-based deque

    for (int i = 0; i < n; i++) {
        char command[20], name[100];
        scanf("%s", command);

        if (strcmp(command, "addFront") == 0 || strcmp(command, "addBack") == 0) {
            scanf("%s", name);
            if (!isValidName(name)) {
                printf("Invalid input\n");
                return 0;
            }

            if (strcmp(command, "addFront") == 0) {
                if (front == 0) {
                    printf("Deque overflow\n");
                    return 0;
                }
                front--;
                deque[front] = strdup(name);
            } else {
                if (rear == MAX - 1) {
                    printf("Deque overflow\n");
                    return 0;
                }
                rear++;
                deque[rear] = strdup(nam);
            }

        } else if (strcmp(command, "removeFront") == 0) {
            if (front <= rear) front++;
        } else if (strcmp(command, "removeBack") == 0) {
            if (front <= rear) rear--;
        } else {
            printf("Invalid input\n");
            return 0;
        }
    }

    // Output the result
    if (front > rear) {
        printf("Empty\n");
    } else {
        for (int i = front; i <= rear; i++) {
            printf("%s", deque[i]);
            if (i < rear) printf(" ");
        }
        printf("\n");
    }

    return 0;
}