#define MD 998244353

Mint a[2d5],b[],z;
graph g;

void f1(ll i,ll p){
	Mint d=1;
	rep[g.edge[i]](j,g.es[i]){
		if(j!=p){
			f1(j,i);
			d+=b[j];
		}
	}
	b[i]=a[i]*d;
}

void f3(ll i,ll p){
	Mint x=1,y;
	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);
}