#include #define ll long long using namespace std; const int mod=998244353; const int maxn=2e5+10; ll resp=0; int sub[maxn], val[maxn], n; vectorv[maxn]; void dfs(int u, int pai){ ll ma=0, me=0; sub[u]=1; for(int viz : v[u]){ if(viz==pai) continue; dfs(viz,u); sub[u]+=sub[viz]; if(val[viz]>val[u]){ resp+=ma*(ll)(sub[viz]); resp%=mod; ma+=sub[viz]; }else if(val[viz]val[u]) resp+=ma*(ll)(n-sub[u]), resp%=mod; else if(val[pai]> n; for(int i=1;i> a >> b; v[a].push_back(b); v[b].push_back(a); } for(int i=1;i<=n;i++) cin >> val[i]; dfs(1,1); cout << resp << '\n'; }