...// In the name of GOD
include <bits/stdc++.h>
define ll long long
define pp pair <int, int>
using namespace std; const int N = 1e5 + 15;
vector <vector > adj; int visit[N] = {0}; int dist[N] = {0}; int lf;
void dfs1(int u, int d) { visit[u] = 1; dist[u] = d;
if (dist[u] > dist[lf])
lf = u;
for (int i = 0; i < (int)adj[u].size(); ++i) {
int e = adj[u][i];
if (visit[e] == 0)
dfs1(e, d + 1);
}
}
void dfs(int start, int d) { visit[start] = 2; dist[start] = d; for (int i = 0; i < (int)adj[start].size(); ++i) { int t = adj[start][i]; if (visit[t] < 2) { dfs(t, d + 1); } } }
void solve() { int n, m, f; cin >> n; m = n — 1; adj = vector <vector > (n); for (int i = 0; i < m; ++i) { int u, v; scanf("%d%d", &u, &v); --u; --v; adj[u].push_back(v); adj[v].push_back(u); }
memset(dist, 0, sizeof dist);
int ans = 0;
for (int i = 0; i < n; ++i) {
if (visit[i] > 0)
continue;
lf = i;
dfs1(i, 0);
dfs(lf, 0);
}
for (int i = 0; i < n; ++i) {
ans = max (ans, dist[i]);
}
// cout << ans << " ";
printf ("%d", ans);
}
int main () { ios_base::sync_with_stdio(false); cin.tie(NULL); int tt = 1; for (int tc = 1; tc <= tt; ++tc) { solve(); } }