/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
class Deque{
private int[] a = new int [100];
private int size_;
private int front_;
private int back_;
private int capacity;
private void resize(int newcapacity){ //Функция изменения размера.
int[] tmp = new int [newcapacity]; //Создаем новый динамический массив с новой размерностью
int j = front_; //Присваиваем начальное значение счетчику.
for(int i = 0; j!= back_; ++i){ //Продвигаемся по деку, пока счетчик не будет равен позиции последнего элемента.
tmp[i] = a[j];
j = (j+1)%capacity;
}
tmp[size_ - 1] = a[back_]; //Так как в цикле перенос последнего элемента из старого массива в новый не произошел, вручную переносим последний элемент старого массива.
a = tmp; //Присваиваем указателю на старый массив указатель на новый массив.
capacity = newcapacity; //Меняем значение вместимости.
front_ = 0; //Теперь первый элемент нового массива стоит на нулевой позиции.
back_ = size_ - 1; //А последний - на позиции на единицу меньшей чем кол-во элементов.
}
public Deque()
{
size_ = 0; front_ = 1; back_ = 0; capacity = 100;
}
public void push_back(int b){
if(size_ == capacity){
this.resize(2*capacity);
}
back_ = (back_ + 1)%capacity;
a[back_] = b;
size_++;
}
public void push_front(int b){
if(size_ == capacity){
this.resize(2*capacity);
}
front_ = (front_ - 1 + capacity)%capacity;
a[front_] = b;
size_++;
}
public void pop_back(){
back_ = (back_ - 1 + capacity)%capacity;
size_--;
}
public void pop_front(){
front_ = (front_ + 1)%capacity;
size_--;
}
public int size(){
return size_;
}
public int back(){
return a[back_];
}
public int front(){
return a[front_];
}
public void clear(){
back_ = 0;
front_ = 1;
size_ = 0;
}
};
/* Name of the class has to be "Main" only if the class is public. */
public class Main
{
{
Scanner in
= new Scanner
(System.
in); Deque a = new Deque();
String[] oper
= {"push_back",
"push_front",
"pop_back",
"pop_front",
"front",
"back",
"size",
"clear",
"exit"}; // System.out.println(oper[0]);
int n;
am:while(true){
s = in.next();
//System.out.println(s);
//System.out.println(s.equals(oper[6]));
if(s.equals(oper[0])){
n = in.nextInt();
a.push_back(n);
out.println("ok");
}
else if(s.equals(oper[1])){
n = in.nextInt();
a.push_front(n);
out.println("ok");
}
else if(s.equals(oper[2])){
if(a.size() != 0){
out.println(a.back());
a.pop_back();
}
else{
out.println("error");
}
}
else if(s.equals(oper[3])){
if(a.size() != 0){
out.println(a.front());
a.pop_front();
}
else{
out.println("error");
}
}
else if(s.equals(oper[4])){
if(a.size() != 0){
out.println(a.front());
}
else{
out.println("error");
}
}
else if(s.equals(oper[5])){
if(a.size() != 0){
out.println(a.back());
}
else{
out.println("error");
}
}
else if(s.equals(oper[6])){
out.println(a.size());
}
else if(s.equals(oper[7])){
out.println("ok");
a.clear();
}
else if(s.equals(oper[8])){
out.println("bye");
//System.exit(0);
break am;
}
}
out.flush();
}
}