# -*- coding:utf-8 -*-
class Solution:
    # 思路:把两个栈当成两个瓶子,
    # 入队就直接把元素放入第一个瓶子,
    # 出队需要三步操作:
    # 1:把第一个瓶子的元素倒入第二个瓶子,
    # 2:把第二个瓶子瓶口的元素拿出来,这就是需要出队的元素,
    # 3:拿出需要出队的元素以后,再把第二个瓶子里的元素倒回第一个瓶子。
    # 这样就可以实现了类似队列的先进先出操作。
    def __init__(self):
        self.stack1 = []
        self.stack2 = []

    def push(self, node):
        # 入队就直接把元素放入第一个瓶子。
        self.stack1.append(node)

    def pop(self):
        # 1:把第一个瓶子的元素倒入第二个瓶子。
        while self.stack1:
            self.stack2.append(self.stack1[-1])
            self.stack1.pop()

        # 现在第二个瓶子的瓶口元素就是需要出队的元素,记录需要出队的元素。
        element = self.stack2[-1]
        # 2:出队。
        self.stack2.pop()

        # 3:拿出需要出队的元素以后,再把第二个瓶子里的元素倒回第一个瓶子。
        while self.stack2:
            self.stack1.append(self.stack2[-1])
            self.stack2.pop()

        return element