#include #include #include #include #include using namespace std; const int T=3; using dat=array; bool isp[1<<20]; vectorps; unsigned int hs[T][1<<20]; int N,A[2<<17]; main() { for(int i=2;i<1<<20;i++)if(!isp[i]) { ps.push_back(i); for(int j=i+i;j<1<<20;j+=i)isp[j]=true; } mt19937 rng(114514); for(int p:ps) { for(int i=0;i>N; mapcnt; long ans=0; dat now={}; cnt[now]=1; for(int i=0;i>A[i]; for(int j=0;ps[j]*ps[j]<=A[i];j++)if(A[i]%ps[j]==0) { int c=0; while(A[i]%ps[j]==0)A[i]/=ps[j],c++; if(c%2) { for(int k=0;k1) { for(int k=0;k