#include #include #include #include #include using namespace std; using mint=atcoder::modint998244353; int N,A[5<<17]; vectorG[5<<17]; int lsp[1<<20]; mapret; mint prod; mint ans[5<<17]; void dfs(int u,int p) { mapcur; mint pr=mint::raw(A[u]); { int a=A[u]; while(a>1) { int q=lsp[a]; int c=0; while(a%q==0)a/=q,c++; cur[q]=c; } } for(int v:G[u])if(v!=p) { dfs(v,u); if(cur.size()>N; for(int i=0;i>A[i]; for(int i=1;i>u>>v;u--,v--; G[u].push_back(v); G[v].push_back(u); } dfs(0,-1); for(int i=0;i