void makelca(){
rep(j, 1, 23){
rep(i, 1, n+1){
fa[i][j] = fa[fa[i][j-1]][j-1]; ///循环顺序 细节1
}
}
}
int lca(int x, int y){
if (depth[x] < depth[y]) swap(x, y);
for (int i=22; i>=0; i--){ ///调到同一层 细节2
if (depth[fa[x][i]] >= depth[y]) x = fa[x][i];
}
if (x == y) return x;
for (int i=22; i>=0; i--){
if (fa[x][i] != fa[y][i]){ ///不等于 细节3
x = fa[x][i]; y = fa[y][i];
}
}
return fa[x][0]; ///return 发【x】【0】 细节4
}