class Solution {
public:
	stack<int> q;
	stack<int> minn;
    void push(int value) {
        q.push(value);
        if(minn.empty()){
        	minn.push(value);
        	return;
		}
		if(minn.top()>=value){
			minn.push(value);
			return;
		}
		return;
    }
    void pop() {
        if(minn.top()==q.top()){
        	minn.pop();
		}
		q.pop();
		return;
    }
    int top() {
        return q.top();
    }
    int min() {
        return minn.top();
    }
};