#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#include<string.h>
typedef struct{
    int*data;
    int front;
    int rear;
    int size;
    int capacity;
}Deque;
Deque*createDeque(int capacity){
    Deque*deque=(Deque*)malloc(sizeof(Deque));
    deque->data=(int*)malloc(sizeof(int)*capacity);
    deque->front=-1;
     deque->rear=-1;
     deque->size=0;
     deque->capacity=capacity;
     return deque;
}
bool isFull(Deque*deque){
     return deque->size== deque->capacity;
}
bool isEmpty(Deque*deque){
    return deque->size==0;
}
bool insertFront(Deque*deque, int x){
    if(isFull(deque)) return false;
    if(isEmpty(deque)){
        deque->front=deque->rear=0;
    }else{
        deque->front(deque->front-1+ deque->capacity % deque->capacity;
    }
    deque->data[deque->front]=x;
    deque->size++;
    retrun true;
}
bool insertlast(Deque*deque, int x){
    if(isFULL(deque)) return false;
    if(isEmpty(deque)){
        deque->front=deque->rear=0;
    }else{
        deque->rear=(deque->rear+1) % deque->capacity;
    }
    deque->data[deque->rear]=x;
    deque->size++;
    retrun true;
}
bool deleteFront(Deque*deque){
    if(isEmpty(deque)) return -1;
    int result=deque->data[deque->front];
    if(deque->front= deque->rear){
        deque->front=deque->rear=0;
    } else {
           deque->front=(deque->front + 1) % deque->capacity;
    }
    deque->size--;
    return result;
    }
bool deleteLast(Deque*deque){
    if(isEmpty(deque)) return -1;
    int result=deque->data[deque->rear];
    if(deque->front= deque->rear){
        deque->front=deque->rear=-1;
    } else {
           deque->rear=(deque->rear + 1) % deque->capacity;
    }
    deque->size--;
    return result;
    }
    int getFront(Dwque* deque){
        if(isEmpty(deque)) return -1;
        return deque->data[deque->front];
    }
    int getRear(Dwque* deque){
        if(isEmpty(deque)) return -1;
        return deque->data[deque->rear];
    }
    int main(){
        int n; scanf("%d", &n);
        Deque* deque= createDeque(n);
        
        char operation[20];
        while(scanf("%s", operation)!=EOF){
            if(strcmp(operation, "insertFront")==0){
                int x;
                scanf("%d", &x);
                if(insertFront(deque, x)){
                    printf("Deque if fill\n");
                }else if(strcmp(operation, "insertLast")==0){
                    int x;
                scanf("%d", &x);
                if(insertLast(deque, x)){
                    printf("Deque if fill\n");
                }else if(strcmp(operation, "deleteFront")==0){
                    int result=deleteFront(deque);
                    if(result==-1){
                        printf("Deque is empty\n");
                    }else{
                        printf("%d\n", result);
                    }
                    else if(strcmp(operation, "deleteLast")==0){
                    int result=deleteLast(deque);
                    if(result==-1){
                        printf("Deque is empty\n");
                    }else{
                        printf("%d\n", result);
                }
                 else if(strcmp(operation, "getFront")==0){
                     printf("%d\n", getFront(deque));
            } else if(strcmp(operation, "getRear")==0){
                     printf("%d\n", getRear(deque));
        }else if(strcmp(operation, "isEmpty")==0){
            printf(isEmpty(deque)?"true\n": "false\n");
    }else if(strcmp(operation, "isFULL")==0){
            printf(isFull(deque)?"true\n": "false\n");
    }
    }
    free(dequq->data);
    free(deque);
    return 0;
}