#include <functional>
#include <queue>
#include <unordered_map>
class Solution {
public:
    int GetUglyNumber_Solution(int index) {
        if(index==0){
            return 0;
        }
        vector<int> vec={2,3,5};
        unordered_map<long, int> map;
        priority_queue<long,vector<long>,greater<long>> ans;
        map[1]=1;
        ans.push(1);
        long a=0;
        for(int i=0;i<index;i++){
            a=ans.top();
            ans.pop();
            for(int j=0;j<3;j++){
                long t=a*vec[j];
                if(map.find(t)==map.end()){
                    map[t]=1;
                    ans.push(t);
                }
            }
        }
        return a;
    }
};