#include <iostream>
#include <string>
using namespace std;
class ArrayQueue {
public:
int n, f, r;
int* arr;
int sizeQ;
ArrayQueue(int size) {
this->n = 0;
this->f = 0;
this->r = 0;
this->arr = new int[size];
for (int i = 0; i < size; i++) {
arr[i] = 0;
}
sizeQ = size;
}
void push(int data) {
if (empty()) {
arr[0] = data;
}
else {
arr[n] = data;
r = (r + 1) % sizeQ;
}
n++;
}
int pop() {
if (empty()) {
return -1;
}
else {
int value = arr[f];
arr[f] = 0;
f = (f + 1) % sizeQ;
n--;
if (empty()) {
f = r = 0;
}
return value;
}
}
int size() {
return n;
}
int front() {
if (empty()) {
return -1;
}
else {
return arr[f];
}
}
int back() {
if (empty()) {
return -1;
}
else {
return arr[r];
}
}
bool empty() {
if (n == 0) {
return true;
}
else {
return false;
}
}
};
int main() {
ArrayQueue Q(10000);
int howMany, data;
string what;
cin >> howMany;
for (int i = 0; i < howMany; i++) {
cin >> what;
if (what == "push") {
cin >> data;
Q.push(data);
}
else if (what == "pop") {
cout << Q.pop() << endl;
}
else if (what == "front") {
cout << Q.front() << endl;
}
else if (what == "back") {
cout << Q.back() << endl;
}
else if (what == "size") {
cout << Q.size() << endl;
}
else if (what == "empty") {
cout << Q.empty() << endl;
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIEFycmF5UXVldWUgewpwdWJsaWM6CglpbnQgbiwgZiwgcjsKCWludCogYXJyOwoJaW50IHNpemVROwoJQXJyYXlRdWV1ZShpbnQgc2l6ZSkgewoJCXRoaXMtPm4gPSAwOwoJCXRoaXMtPmYgPSAwOwoJCXRoaXMtPnIgPSAwOwoJCXRoaXMtPmFyciA9IG5ldyBpbnRbc2l6ZV07CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKCQkJYXJyW2ldID0gMDsKCQl9CgkJc2l6ZVEgPSBzaXplOwoJfQoKCXZvaWQgcHVzaChpbnQgZGF0YSkgewoJCWlmIChlbXB0eSgpKSB7CgkJCWFyclswXSA9IGRhdGE7CgkJfQoJCWVsc2UgewoJCQlhcnJbbl0gPSBkYXRhOwoJCQlyID0gKHIgKyAxKSAlIHNpemVROwoJCX0KCQluKys7Cgl9CgoJaW50IHBvcCgpIHsKCQlpZiAoZW1wdHkoKSkgewoJCQlyZXR1cm4gLTE7CgkJfQoJCWVsc2UgewoJCQlpbnQgdmFsdWUgPSBhcnJbZl07CgkJCWFycltmXSA9IDA7CgkJCWYgPSAoZiArIDEpICUgc2l6ZVE7CgkJCW4tLTsKCQkJaWYgKGVtcHR5KCkpIHsKCQkJCWYgPSByID0gMDsKCQkJfQoJCQlyZXR1cm4gdmFsdWU7CgkJfQoJfQoKCWludCBzaXplKCkgewoJCXJldHVybiBuOwkKCX0KCglpbnQgZnJvbnQoKSB7CgkJaWYgKGVtcHR5KCkpIHsKCQkJcmV0dXJuIC0xOwoJCX0KCQllbHNlIHsKCQkJcmV0dXJuIGFycltmXTsKCQl9Cgl9CgoJaW50IGJhY2soKSB7CgkJaWYgKGVtcHR5KCkpIHsKCQkJcmV0dXJuIC0xOwoJCX0KCQllbHNlIHsKCQkJcmV0dXJuIGFycltyXTsKCQl9Cgl9CgoJYm9vbCBlbXB0eSgpIHsKCQlpZiAobiA9PSAwKSB7CgkJCXJldHVybiB0cnVlOwoJCX0KCQllbHNlIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KfTsKCmludCBtYWluKCkgewoJQXJyYXlRdWV1ZSBRKDEwMDAwKTsKCWludCBob3dNYW55LCBkYXRhOwoJc3RyaW5nIHdoYXQ7CgljaW4gPj4gaG93TWFueTsKCWZvciAoaW50IGkgPSAwOyBpIDwgaG93TWFueTsgaSsrKSB7CgkJY2luID4+IHdoYXQ7CgkJaWYgKHdoYXQgPT0gInB1c2giKSB7CgkJCWNpbiA+PiBkYXRhOwoJCQlRLnB1c2goZGF0YSk7CgkJfQoJCWVsc2UgaWYgKHdoYXQgPT0gInBvcCIpIHsKCQkJY291dCA8PCBRLnBvcCgpIDw8IGVuZGw7CgkJfQoJCWVsc2UgaWYgKHdoYXQgPT0gImZyb250IikgewoJCQljb3V0IDw8IFEuZnJvbnQoKSA8PCBlbmRsOwoJCX0KCQllbHNlIGlmICh3aGF0ID09ICJiYWNrIikgewoJCQljb3V0IDw8IFEuYmFjaygpIDw8IGVuZGw7CgkJfQoJCWVsc2UgaWYgKHdoYXQgPT0gInNpemUiKSB7CgkJCWNvdXQgPDwgUS5zaXplKCkgPDwgZW5kbDsKCQl9CgkJZWxzZSBpZiAod2hhdCA9PSAiZW1wdHkiKSB7CgkJCWNvdXQgPDwgUS5lbXB0eSgpIDw8IGVuZGw7CgkJfQoJfQoJcmV0dXJuIDA7Cn0=