import java.util.*;
import java.util.Stack;

public class Solution {

    Stack<Integer> stack = new Stack<>();
    // 栈用于记录较小的元素

    Stack<Integer> stack1 = new Stack<>();
    public void push(int node) {
        stack.push(node);
//     每次pyush时判断是不是更小的元素,是的话就加入栈2
        if(stack1.isEmpty()||stack1.peek()>node){
            stack1.push(node);
        }else{
            // 不小于的话就重复加入栈顶元素,保持与栈1存储元素数量相同
           // 并且栈顶元素最小
            stack1.push(stack1.peek());
        }
        
    }
    
    public void pop() {
        //因为弹出时可能将最小的元素弹出,
        // 所以此时也要讲栈2弹出一个元素,
        // 与栈1保持同步
            stack.pop();
            stack1.pop();
    }
    
    public int top() {
        return stack.peek();
    }
    
    public int min() {

        return stack1.peek();
        
    }
}