class Solution {
public:
    stack<int>x;
    stack<int>mini;//存最小值的栈
    Solution()//初始化mini栈
    {
        mini.push(INT_MAX);
    }
    void push(int value) {
        x.push(value);
        if(value<=mini.top())
        {
            mini.push(value);
        }
    }
    void pop() {
        if(x.top()==mini.top())
            mini.pop();
        x.pop();
    }
    int top() {
        return x.top();
    }
    int min() {
        return mini.top();
    }
};