#include using namespace std; using ll=long long; int n; vector g[50050]; int a[50050], c[50050]; void dfs0(int x, int p){ for(auto y:g[x]){ if(y==p) continue; c[y]=-c[x]; dfs0(y, x); } } ll dp[50050], ans; bool used[50050]; void dfs(int x, int p){ used[x]=1; map mp; for(auto y:g[x]){ if(y==p) continue; if(a[y]==a[x] || (c[y]>n; for(int i=0; i>a[i]; for(int i=0; i>x>>y; x--; y--; g[x].push_back(y); g[y].push_back(x); } c[0]=1; dfs0(0, -1); for(int i=0; i