class Solution {
    stack<int>p;
public:
    void push(int value) {
        p.push(value);
    }
    void pop() {
        p.pop();
    }
    int top() {
        return p.top();
    }
    int min() {
        int min=1e9+1;
        vector<int> t;
        while(!p.empty()){
            t.push_back(p.top());
            if(min>p.top()){
                min=p.top();
            }
            p.pop();
        }
        for(int i=t.size()-1;i>=0;i--){
            p.push(t[i]);
        }
        return min;
    }
};