// editor2
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#include<string.h>
typedef struct{
    int *data,front,rear,size,capacity;
}Deque;
Deque* createDeque(int capacity){
    Deque*deque=(Deque*)malloc(sizeof(int)*capacity);
    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++;
    return true;
}
bool insertlast(Deque* deque,int x){
    if(isfull(deque)) return false;
    if(isempty(deque)){
        deque->front=deque->rear=0;
    }else{
        deque->front=(deque>rear+1) % deque->capacity;
    }
    deque->data[deque->front]=x;
    deque->size++;
    return true;
}
int deletefront(Deque* deque){
    if(isempty(deque))return-1;
      int result=deque->data[deque->front];
       if(deque->front==deque->rear){
           deque->front=deque->rear=-1;
       }
    else{
        deque->front=deque>front+1) % deque->capacity;
    }
    deque->size--;
    return result;
}
int 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->capacity;
    }
    deque->size--;
    return result;
    
}
int getfront(Deque* deque){
    if(isempty(deque))return-1;
    return deque->data[deque->front];
}

int getrear(Deque* deque){
    if(isempty(deque))return-1;
    return deque->data[deque->rear];
}
int main(){
    int n;
    scanf("%d",&n);
    Deque* deque=createDeque(n);
    char operation[30];
    while(scanf("%s"operation)!=EOF){
        if(strcmp(operation,"insertFront")==0){
         int x;
    scanf("%d",&x); 
    if(!insertfront(deque,x)){
        printf("Deque is full\n");
    }
        }else if(strcmp(operation,"insertLast")==0){
         int x;
    scanf("%d",&x); 
    if(!insertlast(deque,x)){
        printf("Deque is full\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(deque->data);
    free(deque);
    return 0;
}