#include #include using namespace std; using mint=atcoder::modint998244353; int n,a[2<<17]; vector g[2<<17]; pair dfs(int x,int par){//xから下に伸びるpathの合計,xの下で完結したpathの合計 mint ret1=0,ret2=0; for(auto i:g[x]){ if(i==par)continue; auto [p,q]=dfs(i,x); ret2+=ret1*p; ret2+=q; ret1+=p*a[x]; } ret2+=ret1; ret1+=a[x]; return{ret1,ret2}; } int main(){ cin>>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); } cout<