class Solution:
    def __init__(self):
        self.stack = []  # 主栈
        self.min_stack = []  # 辅助栈,用于存储当前的最小值

    def push(self, x):
        self.stack.append(x)
        if not self.min_stack or x <= self.min_stack[-1]:
            self.min_stack.append(x)

    def pop(self):
        if self.stack[-1] == self.min_stack[-1]:
            self.min_stack.pop()
        self.stack.pop()

    def top(self):
        return self.stack[-1]

    def min(self):
        return self.min_stack[-1]

# def process_commands(commands):
#     stack = Solution()
#     results = []
#     for command in commands:
#         if command[0:3] == "PSH":
#             value = int(command[3:])
#             stack.push(value)
#         elif command == "POP":
#             stack.pop()
#         elif command == "TOP":
#             results.append(stack.top())
#         elif command == "MIN":
#             results.append(stack.min())
#     return results

# # 读取输入
# commands = input().strip()
# output = process_commands(commands)
# print(",".join(map(str, output)))