import java.util.*;
public class Solution {
    public int GetUglyNumber_Solution(int index) {
        if(index == 0){
            return 0;
        }
        HashSet<Long> set = new HashSet<>();
        PriorityQueue<Long> pq = new PriorityQueue<>();
        set.add(1l);
        pq.offer(1l);
        long num = 0;
        for(int i = 0;i<index;i++){
            num = pq.poll();
            if(!set.contains(2*num)){
                set.add(num*2);
                pq.offer(num*2);
            }
            if(!set.contains(3*num)){
                set.add(num*3);
                pq.offer(num*3);
            }
            if(!set.contains(5*num)){
                set.add(num*5);
                pq.offer(num*5);
            }
        }
        return (int)num;
    }
}