class Queue{
public:
shared_ptr<Stack> st1;
shared_ptr<Stack> st2;
Queue(int n){
shared_ptr<Stack> p1(new Stack(n));
st1 = p1;
shared_ptr<Stack> p2(new Stack(n));
st2 = p2;
}
public:
char dequeue(){
char ch;
if(st1->size() > 0){
while(!st1->isEmpty()){
st2->push(st1->pop());
}
ch = st2->pop();
while(!st2->isEmpty()){
st1->push(st2->pop());
}
}
return ch;
}
void enqueue(int n){
st1->push(n);
}
bool isEmpty(){
return st1->isEmpty();
}
};