// editor4
#include<stdio.h>
#include<string.h>
#define max 1000
typedef struct dequeue{
    int a[max];
    int front;
    int rear;
    int size;
}dq;
void init(dq *d,int n){
    d->size=n;
    d->front=-1;
    d->rear=-1;
}
int empty(dq *d){
    return (d->front==-1);
}
int full(dq *d){
    return ((d->front==0 && d->rear == q->size-1)||(d->front==d->rear+1));
}
void front(dq *q,int x){
    if(full(d))
    return;
    if (empty(d)){
        d->front=d->rear=0;
    }
    else if(d->front==0){
        d->front=d->size-1;
    }else{
        d->front--;
    }
    d->a[d->front]=x;
}
void insertF(dq *d,int x){
    if(full(d)) return;
    if(empty(d)){
        d->front=d->rear=0;
    }else if(d->front==0){
        d->front=d->size-1;
    }else{
        d->front--;
    }
    d->a[d->front]=x;
}
void insertL(dq *d,int x)
{
    if(full(d))
    return;
    if(empty(d)){
        d->front=d->rear=0;
    }else if(d->rear==d->size-1){
        d->rear=0;
    }else{
        d->rear++;
    }
        d->a[d->rear]=x;
}
void deletefront(dq *d){
    if(empty(d)){
        printf("-1\n");
        return;
    }
    printf("%d\n",d-a[d->front]);
    if(d->front==d->rear){
        d->front=d->rear=-1;
    }else if(d->front==d->size-1){
        d->front=0;
    }else{
        d->front++;
    }
}
void deletelast(dq *q){
    if(empty(d)){
        printf("-1\n");
        return;
    }
    printf("%d\n",d->a[d->rear]);
    if(d->front==d->rear){
        d->front=d->rear=-1;
    }else if(d->rear==0)
    {
        d->rear=d->size-1;
    }else{
        d->rear--;
    }
}
void getf(dq *d){
    if(empty(d)){
        printf("-1\n");
    }
    else
       printf("%d\n",d->a[d->rear]);
    
}
void getrear(dq *d){
    if(empty(d))
        printf("-1\n");
    else
      printf("%d\n",d->a[d->rear]);
    
}
int main(){
    int n;
    scanf("%d",&n);
    dq d;
    init(&d,n);
    char cmd[20];
    int x;
    while(scanf("%s",cmd)!=EOF){
        if(strcm(cmd,"insertFront")==0){
            scanf("%d",&x);
            insertF(&d,x);
        }else if(strcmd(cmd,"insertlast")==0){
            scanf("%d",&x);
            insertL(&d,x);
        }else if(strcmd(cmd,"deletefront")==0){
            scanf("%d",&x);
            deletefront(&d,x);
    }else if(strcmd(cmd,"deletetlast")==0){
            scanf("%d",&x);
            deletelast(&d,x);
     }else if(strcmd(cmd,"getfront")==0){
            getf(&d);
     }else if(strcmd(cmd,"getrear")==0){
            getrear(&d);
     }else if(strcmd(cmd,"isempty")==0){
         printf(empty(&d)?"true\n":"false\n");
     }else if(strcmd(cmd,"isfull")==0){
         printf(full(&d)?"true\n":"false\n");
     }
    }
    return 0;
}