const int MAXN = 2e5 + 10;
vector<int> G[MAXN];
int dis[MAXN], mxdis;
void dfs(int u, int p) {
dis[u] = dis[p] + 1;
if(dis[u] > dis[mxdis])
mxdis = u;
for(int v : G[u]) {
if(v == p)
continue;
dfs(v, u);
}
}
int getDiameter(int root = 1) {
mxdis = 0;
dfs(root, 0);
root = mxdis;
mxdis = 0;
dfs(root, 0);
return dis[mxdis];
}