class MinStack:
def __init__(self):
self.st = []
self.mini = []
def push(self, val: int) -> None:
if self.st:
if val <= self.mini[-1]:
self.mini.append(val)
else:
self.mini.append(val)
self.st.append(val)
def pop(self) -> None:
if self.st:
deleted = self.st[-1]
self.st.pop()
if self.mini and deleted == self.mini[-1]:
self.mini.pop()
def top(self) -> int:
if self.st:
return self.st[-1]
def getMin(self) -> int:
return self.mini[-1]
CmNsYXNzIE1pblN0YWNrOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBzZWxmLnN0ID0gW10KICAgICAgICBzZWxmLm1pbmkgPSBbXSAgICAgIAogICAgZGVmIHB1c2goc2VsZiwgdmFsOiBpbnQpIC0+IE5vbmU6CiAgICAgICAgaWYgc2VsZi5zdDogICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIHZhbCA8PSBzZWxmLm1pbmlbLTFdOgogICAgICAgICAgICAgICAgc2VsZi5taW5pLmFwcGVuZCh2YWwpICAgICAgICAgICAgICAgICAgICAKICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLm1pbmkuYXBwZW5kKHZhbCkKCiAgICAgICAgc2VsZi5zdC5hcHBlbmQodmFsKQoKCiAgICBkZWYgcG9wKHNlbGYpIC0+IE5vbmU6CiAgICAgICAgaWYgc2VsZi5zdDoKICAgICAgICAgICAgZGVsZXRlZCA9IHNlbGYuc3RbLTFdCiAgICAgICAgICAgIHNlbGYuc3QucG9wKCkKICAgICAgICAgICAgaWYgc2VsZi5taW5pIGFuZCBkZWxldGVkID09ICBzZWxmLm1pbmlbLTFdOgogICAgICAgICAgICAgICAgc2VsZi5taW5pLnBvcCgpCiAgICAKCiAgICBkZWYgdG9wKHNlbGYpIC0+IGludDoKICAgICAgICBpZiBzZWxmLnN0OgogICAgICAgICAgICByZXR1cm4gc2VsZi5zdFstMV0gICAgCgogICAgZGVmIGdldE1pbihzZWxmKSAtPiBpbnQ6CiAgICAgICAgcmV0dXJuIHNlbGYubWluaVstMV0KICAgIA==