#include using namespace std; using ll=long long; const int N=2e5+5; int sub,n; ll a[N]; vectore[N]; priority_queuepq[N]; int rt[N],cnt; int merge(int u,int v){ if(pq[u].size()=a[u])cur+=op*v,pq[rt[u]].pop(); else break; op=-op; } a[u]+=cur; if(pq[rt[u]].empty()){ if(op==1)era[u]=1; break; } if(op==1){ a[u]+=pq[rt[u]].top(); pq[rt[u]].pop(); } else{ if(pq[rt[u]].top()>sub>>n; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i>u>>v; e[u].push_back(v),e[v].push_back(u); } dfs(1,0); solve(1); int op=-1; ll ans=a[1]; vectornow; while(!pq[rt[1]].empty())now.push_back(pq[rt[1]].top()),pq[rt[1]].pop(); for(auto v:now){ ans+=op*v; op=-op; } if(op==1)ans+=rub[1]; else ans-=rub[1]; cout<