int[][] g ; int[] lvl; int[][] par ; int dfs_time ; int[] st,end; int n,m; void solve() throws Exception { n=ni(); m=n-1; // everything is 0-based indexing int[] to = new int[m]; int[] from = new int[m]; for(int i=0;i st[u] && end[v] < end[u]); } int lca(int u,int v){ if(ancestor(u,v)) return u; if(ancestor(v,u)) return v; for(int i=19;i>=0;--i){ if(!ancestor(par[u][i],v)){ u = par[u][i]; } } return par[u][0]; }