import java.util.Stack;

public class Solution {
    Stack<Integer> stack1 = new Stack<Integer>();
    Stack<Integer> stack2 = new Stack<Integer>();

    public void push(int node) {
        stack1.push(node);
    }

    public int pop() {

       /**
         * stack1 push5次 stack1里的顺序应该是 5 4 3 2 1
         * 此时不论你stack1后续是否调用pop 但题目主题是要用2个栈实现队列
         * 那么我就应该判断 只要stack1不为null 就应该把stack1里面的元素
         * 5 4 3 2 1 push到 stack2中 变为 1 2 3 4 5 且前提是stack2非null
         * 因为如果是stack1 1 2 3 4 5 在第3次push后 调用了一次pop
         * 那么 stack1中 3 2 1 应该落入stack2中为 1 2 3 且只弹出了 1一个元素
         * 此时stack1继续push 4 5 此时stack2中 仍有2 3在栈中 要想实现
         * 队列的效果,此时stack2中在存在元素的情况下,不应再push元素,如果push
         * 了 stack2就变成了 4 5 2 3了 达不到题目的效果了
         * 所以此时在stack2存在元素的情况下,应该仍然弹出剩下的2 3元素才可以
         */
        if (stack2.isEmpty()) {
            while (!stack1.isEmpty()) {
                stack2.push(stack1.pop());
            }
        }

        return stack2.pop();
    }
}