package main

import "math"

var stack []int
var minStack = []int{math.MaxInt}

/*
*
stack:正常存储元素
minStack:存当前push进去的最小值,每次弹出是直接获取top元素就是最小值
*/
func Push(node int) {
	stack = append(stack, node)
	min := minNum(node, minStack[len(minStack) - 1])
	minStack = append(minStack, min)
}

func Pop() int {
	minStack = minStack[:len(minStack)-1]
	res := stack[len(stack)-1]
	stack = stack[:len(stack)-1]
	return res
}

func Top() int {
	return stack[len(stack)-1]
}

func Min() int {
	return minStack[len(minStack)-1]
}

func minNum(a, b int) int {
	if a < b {
		return a
	}
	return b
}