import java.util.*;


public class Solution {
    public Deque<Integer> stack = new ArrayDeque<>();
    public int min = (int)1e9;
    public void push(int node) {
        stack.push(node);
    }
    
    public void pop() {
        stack.pop();
        min = (int)1e9;
    }
    
    public int top() {
        return stack.peek();
    }
    
    public int min() {
        Deque<Integer> stack1 = new ArrayDeque<>(stack);
        while(!stack1.isEmpty()){
            if(stack1.peek()<min){
                min = stack1.pop();
                continue;
            }
            stack1.pop();//窝想不到O(1)的操作方法,我是飞舞
        }
        return min;
    }
}