#define MD 998244353 Mint a[2d5],b[],d[],z; graph g; void f1(ll i,ll p){ rep[g.edge[i]](j,g.es[i]){ if(j!=p){ f1(j,i); d[i]+=b[j]; } } b[i]=a[i]*(d[i]+1); } void f3(ll i,ll p){ Mint y=0,x=1; rep[g.edge[i]](j,g.es[i]){ if(j!=p){ f3(j,i); y+=x*b[j]; x+=b[j]; } } z+=y*a[i]; } { ll@n; rd(a(n)); int@(u,v)--[n-1]; g.setEdge(n,n-1,u,v); f1(0,0); f3(0,0); wt(z); }