Too Long; Didn't Read
Sergei Golitsyn proposes a first in first out (FIFO) queue using only two stacks. The main trick will be in **pop** and **peak** operations. For pop operation, we have to move all elements from the current stack to the tmp stack. If **tmp** stack contains an element we can simply return an element from this stack. The problem is simple and clear, just add an element into the stack. For pop, we need to move an element to the next stack and return it.