import java.util.ArrayList;

public class Solution {

    private Stack<Integer> stack = new Stack();
    public void push(int node) {
        stack.push(node);
    }
    
    public void pop() {
        stack.pop();
    }
    
    public int top() {
        return stack.peek();
    }
    
    public int min() {
        ArrayList<Integer> list = new ArrayList<>();
        int min = stack.pop();
        list.add(min);
        while(!stack.isEmpty()){
            int pop  = stack.pop();
            min = Math.min(min,pop);
            list.add(0,pop);
        }
        for(int i = 0;i<list.size();i++){
            stack.push(list.get(i));
        }
        list.clear();
        return min;
    }
}