ll@n,a[n+1]; VI v[n+1]; a[0..n]=(0..); int pr[500]; REP[pr](p,Prime(548,pr)){ ll pp=(ll)p*p; for(ll j=1;j*=pp,j<=n;){ rep(k,n/j+1){ a[k*j]/=pp; } } } rep(i,1,n+1){ v[a[i]].push_back(i); } rep(i,1,n+1){ wtSp(v[a[i]].back()); v[a[i]].pop_back(); }