//牛客网答案,感觉好简洁
package main

var stack1 [] int
var stack2 [] int

func Push(node int) {
    stack1 = append(stack1, node)                //直接压栈,stack1无需判断是否栈满了,无长度限制
}

func Pop() int{
    if len(stack2) == 0 {                        //stack2为空时,移动stack1的内容到stack2
        for i := 0; i < len(stack1); i++ {        //将stack1的数据,从后往前,全部移到stack2中
            stack2 = append(stack2, stack1[len(stack1)-1-i])
        }
        stack1 = []int{}                        //stack1置空
    }

    res := stack2[len(stack2)-1]                 //获取最后一个位置作为栈顶元素
    stack2 = stack2[:len(stack2)-1]             //左闭右开,取得0~n-2的元素作为新的切片
    return res                                    //stack2弹出结果
}










/*
//总函数,力扣的解答,反正是贼麻烦,手写无望
type MyQueue struct {
    inStack, outStack []int
}

//初始化队列
func Constructor() MyQueue {
    return MyQueue{}
}

// push增加队尾元素
func (q *MyQueue) Push(x int) {
    q.inStack = append(q.inStack, x)
}

func (q *MyQueue) in2out() {
    for len(q.inStack) > 0 {
        q.outStack = append(q.outStack, q.inStack[len(q.inStack)-1])
        q.inStack = q.inStack[ :len(q.inStack)-1]
    }
}

//pop出队
func (q *MyQueue) Pop() int {
    if len(q.outStack) == 0 {
        q.in2out()
    }
    x := q.outStack[len(q.outStack)-1]
    q.outStack = q.outStack[ :len(q.outStack)-1]

    return x
}

//peek查询队首元素
func (q *MyQueue) Peek() int {
    if len(q.outStack) == 0 {
        q.in2out()
    }
    x := q.outStack[len(q.outStack)-1]

    return x
}

//判断empty, 结束值
func (q *MyQueue) Empty() bool {
    return len(q.inStack) == 0 && len(q.outStack) == 0 
}
*/