#include <stdio.h>
#include <stdlib.h>
typedef struct {
    int *arr;
    int front;
    int rear;
    int size;
    int capacity;
} Deque;

// Function to create a new Deque
Deque* createDeque(int capacity) {
    Deque* deque = (Deque*)malloc(sizeof(Deque));
    deque->capacity = capacity;
    deque->front = -1;
    deque->rear = 0;
    deque->size = 0;
    deque->arr = (int*)malloc(capacity * sizeof(int));
    return deque;
}

// Function to check if Deque is full
int isFull(Deque* deque) {
    return (deque->size == deque->capacity);
}

// Function to check if Deque is empty
int isEmpty(Deque* deque) {
    return (deque->size == 0);
}

// Function to add an element to the front
void pushFront(Deque* deque, int item) {
    if (isFull(deque)) {
        printf("Invalid input\n"); // Belt is full
        return;
    }
    if (isEmpty(deque)) {
        deque->front = 0;
        deque->rear = 0;
    } else {
        deque->front = (deque->front - 1 + deque->capacity) % deque->capacity;
    }
    deque->arr[deque->front] = item;
    deque->size++;
}

// Function to add an element to the back
void pushBack(Deque* deque, int item) {
    if (isFull(deque)) {
        printf("Invalid input\n"); // Belt is full
        return;
    }
    if (isEmpty(deque)) {
        deque->front = 0;
        deque->rear = 0;
    } else {
        deque->rear = (deque->rear + 1) % deque->capacity;
    }
    deque->arr[deque->rear] = item;
    deque->size++;
}

// Function to remove an element from the front
void popFront(Deque* deque) {
    if (isEmpty(deque)) {
        printf("Empty\n");
        return;
    }
    printf("Removed\n");
    if (deque->front == deque->rear) { // Only one element
        deque->front = -1;
        deque->rear = 0;
    } else {
        deque->front = (deque->front + 1) % deque->capacity;
    }
    deque->size--;
}

// Function to remove an element from the back
void popBack(Deque* deque) {
    if (isEmpty(deque)) {
        printf("Empty\n");
        return;
    }
    printf("Removed\n");
    if (deque->front == deque->rear) { // Only one element
        deque->front = -1;
        deque->rear = 0;
    } else {
        deque->rear = (deque->rear - 1 + deque->capacity) % deque->capacity;
    }
    deque->size--;
}

// Function to get the front element
void getFront(Deque* deque) {
    if (isEmpty(deque)) {
        printf("Empty\n");
        return;
    }
    printf("%d\n", deque->arr[deque->front]);
}

// Function to get the back element
void getBack(Deque* deque) {
    if (isEmpty(deque)) {
        printf("Empty\n");
        return;
    }
    printf("%d\n", deque->arr[deque->rear]);
}

// Function to print YES/NO for ISEMPTY
void printIsEmpty(Deque* deque) {
    if (isEmpty(deque)) {
        printf("YES\n");
    } else {
        printf("NO\n");
    }
}

// Function to print YES/NO for ISFULL
void printIsFull(Deque* deque) {
    if (isFull(deque)) {
        printf("YES\n");
    } else {
        printf("NO\n");
    }
}
int main() {
    int C, Q;
    if (scanf("%d %d", &C, &Q) != 2) {
        printf("Invalid input\n");
        return 1;
    }

    if (C < 1 || C > 1000 || Q < 0 || Q > 50000) {
        printf("Invalid input\n");
        return 1;
    }

    Deque* deque = createDeque(C);
    char command[20];
    int value;

    for (int i = 0; i < Q; i++) {
        if (scanf("%s", command) != 1) {
            printf("Invalid input\n");
            return 1;
        }

        if (strcmp(command, "PUSHFRONT") == 0) {
            if (scanf("%d",&value) != 1) {
                printf("Invalid input\n");
                return 1;
            }
            pushFront(deque, value);
        } else if (strcmp(command, "PUSHBACK") == 0) {
            if (scanf("%d", &value) != 1) {
                printf("Invalid input\n");
                return 1;
            }
            pushBack(deque, value);
        } else if (strcmp(command, "POPFRONT") == 0) {
            popFront(deque);
        } else if (strcmp(command, "POPBACK") == 0) {
            popBack(deque);
        } else if (strcmp(command, "FRONT") == 0) {
            getFront(deque);
        } else if (strcmp(command, "BACK") == 0) {
            getBack(deque);
        } else if (strcmp(command, "ISEMPTY") == 0) {
            printIsEmpty(deque);
        } else if (strcmp(command, "ISFULL") == 0) {
            printIsFull(deque);
        } else {
            printf("Invalid input\n");
            return 1;
        }
    }

    free(deque->arr);
    free(deque);

    return 0;
}