class Solution:
def nthUglyNumber(self, n: int) -> int:
# time O(1) space O(1)
res = [1]
i2,i3,i5= 0,0,0
while n > 1:
u2,u3,u5 = res[i2]*2,res[i3]*3,res[i5]*5
minui = min(u2,u3,u5)
if minui % 2 == 0:
i2 += 1
if minui % 3 == 0:
i3 += 1
if minui % 5 == 0:
i5 += 1
res.append(minui)
n -= 1
return res[-1]