class Solution {
public:
    void push(int value) {
        x.push_back(value);
        if(x.size()==1){
            m.push_back(value);
        }
        else{
            if(m[m.size()-1]<value){
                value=m[m.size()-1];
            }
            m.push_back(value);
        }
    }
    void pop() {
        x.erase(x.end()-1);
        m.erase(m.end()-1);
    }
    int top() {
        return x[x.size()-1];
    }
    int min() {
        return m[m.size()-1];
    }
    vector<int> x,m;
};