Implement the following operations of a queue using stacks.

  • enqueue(x) : Insert an item x to the rear of queue.
  • dequeue() : Remove an item from front of queue
  • peek() : Get the front item.
  • empty() : Return whether the queue is empty.

Problem Note

  • You must use only standard operations of a stack : which means only push to top, peek/pop from top, size, and isempty operations are valid.
  • Depending on your language, stack may not be supported natively. You may simulate a stack by using a list or deque (double-ended queue), as long as you use only standard operations of a stack.
  • You may assume that all operations are valid (for example, no pop or peek operations will be called on an empty queue).

Example

NewQueue queue = new NewQueue();

queue.enqueue(5);
queue.enqueue(10);  
queue.peek();  // returns 5
queue.dequeue();   // returns 5
queue.empty(); // returns false

Input Format:

First line contains N, the total number of queries.

Each of the following N lines have a query of any of the 4 types, type 1(enqueue), type 2(dequeue), type 3(peek), type 4(empty).

Query for type 1 is of format: 1 v, where v is value

Query for type 2, 3 and 4 just mention the query type

For example, the input for the above example will be:

5
1 5
1 10
3
2
4