new solution, not O(lgn) for push and pop, O(1) for min