#include<bits/stdc++.h>
using namespace std;
typedef struct node{
int val;
node* next;
node* prev;
};
node* make_chain(int key){
node* n = new node;
n->val =key;
n->next = NULL;
n->prev = NULL;
return n;
}
class dqueue{
public:
int size;
node* front;
node* back;
dqueue(){
size = 0;
front = NULL;
back = NULL;
}
bool isEmpty()
{
return size == 0;
}
void to_front(int key)
{
if(isEmpty())
{
node* n = make_chain(key);
front = n;
back = n;
}
else
{
node* n = make_chain(key);
n->prev = front;
front->next = n;
front = n;
}
size++;
}
void push_back(int key)
{
if(isEmpty())
{
node* n = make_chain(key);
front = n;
back = n;
}
else
{
node* n = make_chain(key);
n->next = back;
back->prev = n;
back = n;
}
size++;
}
void reverse()
{
// if(size>1)
// {
// vector<int>r;
// node* temp = back;
// while(temp)
// {
// r.push_back(temp->val);
// temp = temp->next;
// }
// temp = front;
// int i=0;
// while(temp)
// {
// temp->val = r[i];
// i++;
// temp = temp->prev;
// }
// }
}
void pfront()
{
if(isEmpty())
{
cout<<"No job for Ada?"<<endl;
return;
}
else
{
cout<<front->val<<endl;
if(size>1)
{
node* temp = front;
front = front->prev;
front->next = NULL;
free(temp);
}
else
{
node* temp = front;
front = NULL;
back = NULL;
free(temp);
}
size--;
}
}
void pback()
{
if(size == 0)
{
cout<<"NO job for Ada?"<<endl;
return;
}
else
{
cout<<back->val<<endl;
if(size>1)
{
node* temp = back;
back = back->next;
back->prev = NULL;
//free(back);
}
else
{
node* temp = back;
front = NULL;
back = NULL;
free(temp);
}
size--;
}
}
};
int main()
{
int t;
cin>>t;
//vector<int>r;
dqueue d;
bool flag =0;
while(t--)
{
string s;
cin>>s;
if(s[0] == 't')
{
int x;
cin>>x;
//r.insert(r.begin(),x);
if(!flag)
d.to_front(x);
else
d.push_back(x);
}
else if(s[0] == 'f')
{
if(!flag)
d.pfront();
else
d.pback();
}
else if(s[0] == 'b')
{
if(!flag)
d.pback();
else
d.pfront();
}
else if(s[0] == 'p')
{
int x;
cin>>x;
if(!flag)
d.push_back(x);
else
d.to_front(x);
}
else
{
if(flag)
flag = 0;
else
flag =1;
}
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgc3RydWN0IG5vZGV7CiAgICBpbnQgdmFsOwogICAgbm9kZSogbmV4dDsKICAgIG5vZGUqIHByZXY7Cn07Cgpub2RlKiBtYWtlX2NoYWluKGludCBrZXkpewogICAgbm9kZSogbiA9IG5ldyBub2RlOwogICAgbi0+dmFsID1rZXk7CiAgICBuLT5uZXh0ID0gTlVMTDsKICAgIG4tPnByZXYgPSBOVUxMOwogICAgcmV0dXJuIG47Cn0KCmNsYXNzIGRxdWV1ZXsKcHVibGljOgogICAgaW50IHNpemU7CiAgICBub2RlKiBmcm9udDsKICAgIG5vZGUqIGJhY2s7CiAgICAKICAgIGRxdWV1ZSgpewogICAgICAgIHNpemUgPSAwOwogICAgICAgIGZyb250ID0gTlVMTDsKICAgICAgICBiYWNrID0gTlVMTDsKICAgIH0KICAgIGJvb2wgaXNFbXB0eSgpCiAgICB7CiAgICAgICAgcmV0dXJuIHNpemUgPT0gMDsKICAgIH0KICAgIHZvaWQgdG9fZnJvbnQoaW50IGtleSkKICAgIHsKICAgICAgICBpZihpc0VtcHR5KCkpCiAgICAgICAgewogICAgICAgICAgIG5vZGUqIG4gPSBtYWtlX2NoYWluKGtleSk7CiAgICAgICAgICAgZnJvbnQgID0gbjsKICAgICAgICAgICBiYWNrID0gbjsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgbm9kZSogbiA9IG1ha2VfY2hhaW4oa2V5KTsKICAgICAgICAgICAgbi0+cHJldiA9IGZyb250OwogICAgICAgICAgICBmcm9udC0+bmV4dCA9IG47CiAgICAgICAgICAgIGZyb250ID0gbjsKICAgICAgICB9CiAgICAgICAgc2l6ZSsrOwogICAgfQogICAgdm9pZCBwdXNoX2JhY2soaW50IGtleSkKICAgIHsKICAgICAgICBpZihpc0VtcHR5KCkpCiAgICAgICAgewogICAgICAgICAgIG5vZGUqIG4gPSBtYWtlX2NoYWluKGtleSk7CiAgICAgICAgICAgZnJvbnQgID0gbjsKICAgICAgICAgICBiYWNrID0gbjsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgbm9kZSogbiA9IG1ha2VfY2hhaW4oa2V5KTsKICAgICAgICAgICAgbi0+bmV4dCA9IGJhY2s7CiAgICAgICAgICAgIGJhY2stPnByZXYgPSBuOwogICAgICAgICAgICBiYWNrID0gbjsKICAgICAgICB9CiAgICAgICAgc2l6ZSsrOwogICAgfQogICAgdm9pZCByZXZlcnNlKCkKICAgIHsKICAgICAgICAvLyBpZihzaXplPjEpCiAgICAgICAgLy8gewogICAgICAgIC8vICAgICB2ZWN0b3I8aW50PnI7CiAgICAgICAgLy8gICAgIG5vZGUqIHRlbXAgPSBiYWNrOwogICAgICAgIC8vICAgICB3aGlsZSh0ZW1wKQogICAgICAgIC8vICAgICB7CiAgICAgICAgLy8gICAgICAgICByLnB1c2hfYmFjayh0ZW1wLT52YWwpOwogICAgICAgIC8vICAgICAgICAgdGVtcCA9IHRlbXAtPm5leHQ7CiAgICAgICAgLy8gICAgIH0KICAgICAgICAvLyAgICAgdGVtcCA9IGZyb250OwogICAgICAgIC8vICAgICBpbnQgaT0wOwogICAgICAgIC8vICAgICB3aGlsZSh0ZW1wKQogICAgICAgIC8vICAgICB7CiAgICAgICAgLy8gICAgICAgICB0ZW1wLT52YWwgPSByW2ldOwogICAgICAgIC8vICAgICAgICAgaSsrOwogICAgICAgIC8vICAgICAgICAgdGVtcCA9IHRlbXAtPnByZXY7CiAgICAgICAgLy8gICAgIH0KICAgICAgICAvLyB9CiAgICB9CiAgICB2b2lkIHBmcm9udCgpCiAgICB7CiAgICAgICAgaWYoaXNFbXB0eSgpKQogICAgICAgIHsKICAgICAgICAgICAgY291dDw8Ik5vIGpvYiBmb3IgQWRhPyI8PGVuZGw7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgY291dDw8ZnJvbnQtPnZhbDw8ZW5kbDsKICAgICAgICAgICAgaWYoc2l6ZT4xKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBub2RlKiB0ZW1wID0gZnJvbnQ7CiAgICAgICAgICAgICAgICBmcm9udCA9IGZyb250LT5wcmV2OwogICAgICAgICAgICAgICAgZnJvbnQtPm5leHQgPSBOVUxMOwogICAgICAgICAgICAgICAgZnJlZSh0ZW1wKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsgICAKICAgICAgICAgICAgICAgIG5vZGUqIHRlbXAgPSBmcm9udDsKICAgICAgICAgICAgICAgIGZyb250ID0gTlVMTDsKICAgICAgICAgICAgICAgIGJhY2sgPSBOVUxMOwogICAgICAgICAgICAgICAgZnJlZSh0ZW1wKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzaXplLS07CiAgICAgICAgfQogICAgfQogICAgdm9pZCBwYmFjaygpCiAgICB7CiAgICAgICAgaWYoc2l6ZSA9PSAwKQogICAgICAgIHsKICAgICAgICAgICAgY291dDw8Ik5PIGpvYiBmb3IgQWRhPyI8PGVuZGw7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgY291dDw8YmFjay0+dmFsPDxlbmRsOwogICAgICAgICAgICBpZihzaXplPjEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5vZGUqIHRlbXAgPSBiYWNrOwogICAgICAgICAgICAgICAgYmFjayA9IGJhY2stPm5leHQ7CiAgICAgICAgICAgICAgICBiYWNrLT5wcmV2ID0gTlVMTDsKICAgICAgICAgICAgICAgIC8vZnJlZShiYWNrKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5vZGUqIHRlbXAgPSBiYWNrOwogICAgICAgICAgICAgICAgZnJvbnQgPSBOVUxMOwogICAgICAgICAgICAgICAgYmFjayA9IE5VTEw7CiAgICAgICAgICAgICAgICBmcmVlKHRlbXApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHNpemUtLTsKICAgICAgICB9CiAgICB9Cn07CgppbnQgbWFpbigpCnsKICAgIGludCB0OwogICAgY2luPj50OwogICAgLy92ZWN0b3I8aW50PnI7CiAgICBkcXVldWUgZDsKICAgIGJvb2wgZmxhZyA9MDsKICAgIHdoaWxlKHQtLSkKICAgIHsKICAgICAgICBzdHJpbmcgczsKICAgICAgICBjaW4+PnM7CiAgICAgICAgaWYoc1swXSA9PSAndCcpCiAgICAgICAgewogICAgICAgICAgICBpbnQgeDsKICAgICAgICAgICAgY2luPj54OwogICAgICAgICAgICAvL3IuaW5zZXJ0KHIuYmVnaW4oKSx4KTsKICAgICAgICAgICAgaWYoIWZsYWcpCiAgICAgICAgICAgICAgICBkLnRvX2Zyb250KHgpOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBkLnB1c2hfYmFjayh4KTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZihzWzBdID09ICdmJykKICAgICAgICB7CiAgICAgICAgICAgIGlmKCFmbGFnKQogICAgICAgICAgICAgICAgZC5wZnJvbnQoKTsKICAgICAgICAgICAgZWxzZSAgICAKICAgICAgICAgICAgICAgIGQucGJhY2soKTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZihzWzBdID09ICdiJykKICAgICAgICB7CiAgICAgICAgICAgIGlmKCFmbGFnKQogICAgICAgICAgICAgICAgZC5wYmFjaygpOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBkLnBmcm9udCgpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKHNbMF0gPT0gJ3AnKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHg7CiAgICAgICAgICAgIGNpbj4+eDsKICAgICAgICAgICAgaWYoIWZsYWcpCiAgICAgICAgICAgICAgICBkLnB1c2hfYmFjayh4KTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgZC50b19mcm9udCh4KTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgaWYoZmxhZykKICAgICAgICAgICAgICAgIGZsYWcgPSAwOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBmbGFnID0xOwogICAgICAgIH0KICAgIH0KfQ==
MTUKdG9Gcm9udCA5Mwpmcm9udApiYWNrCnJldmVyc2UKYmFjawpyZXZlcnNlCnRvRnJvbnQgODAKcHVzaF9iYWNrIDUzCnB1c2hfYmFjayA1MApmcm9udApmcm9udApyZXZlcnNlCnB1c2hfYmFjayA2NgpyZXZlcnNlCmZyb250
15
toFront 93
front
back
reverse
back
reverse
toFront 80
push_back 53
push_back 50
front
front
reverse
push_back 66
reverse
front