#pragma once
vector<int>factor_enumerate(intN){vector<int>lp(N+1,0);if(N<2)returnlp;vector<int>pr{2,3};for(inti=2;i<=N;i+=2)lp[i]=2;for(inti=3;i<=N;i+=6)lp[i]=3;for(inti=5,d=4;i<=N;i+=d=6-d){if(lp[i]==0){lp[i]=i;pr.push_back(i);}for(intj=2;j<(int)pr.size()&&i*pr[j]<=N;++j){lp[i*pr[j]]=pr[j];if(pr[j]==lp[i])break;}}returnlp;}