#include<stdio.h>
#include<stdlib.h>
#define MAX 1000
int deque[MAX];
int front = -1, rear = 0, size = 0;
void insertFront(int x){
    if(size == MAX){
        printf("-1\n");
        return;
    }
    if(front == -1)front = 0;
    else front =(front - 1 + MAX) % MAX;
    deque[front] = x;
    size++;
}
void insertLast(int x){
    if(size == MAX){
        printf("-1\n");
        return;
    }
    if(front == MAX){
        printf("-1\n");
        return;
    }
    if(front == -1) front = 0;
    deque[rear] = x;
    rear = (rear + 1) % MAX;
    size++;
}
void deleteFront(){
    if(size == 0){
        printf("-1\n");
        return;
    }
    printf("%d\n", deque[front]);
    front = (front + 1) % MAX;
    size--;
}
void deleteLast(){
    if(size == 0){
        printf("-1\n");
        return;
    }
    rear = (raer - 1 + MAX) % MAX;
    printf("%d\n",deque[rear]);
    size--;
}
void getFront(){
    if(size == 0) printf("-1\n");
    else printf("%d\n", deque[front]);
}
void getRear(){
    if(size == 0) printf("-1\n");
    else printf("%d\n",deque[(rear - 1 + MAX)]);
}
void isEmpty(){
    printf("%d\n", size == 0);
}
void isFull(){
    printf("%d\n", size == MAX);
}
int main(){
    int n;
    scanf("%d",&n);
    for(int i = 0; i < n; i++){
        char op[20];
        scanf("%s", op);
        if(op[0] == 'i'){
            int x;
            scanf("%s",&x);
            if(op[6] == 'F') insertFont(x);
            else insertLast(x);
        }else if(op[0] =='d'){
            if(op[6] == 'F') deleteFront();
            else deleteLast();
        }else if(op[0] == 'g'){
            if(op[3] == 'F') getFront();
            else getRear();
        }else if(op[0] == 'i'){
            if(op[2] == 'E') isEmpty();
            else isFull();
        }
}
return 0;
}