class Solution {
public:
    stack<int> s;
    stack<int> a; // 存储最小值于栈顶
    void push(int value) {
        s.push(value);
        if(a.empty())
            a.push(value);
        else {
            if (a.top() < value)
                a.push(a.top());
            else
                a.push(value);
        }
    }
    void pop() {
        s.pop();
        a.pop();
    }
    int top() {
        return s.top();
    }
    int min() {
        return a.top();
    }
};