#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define all(s) s.begin(), s.end()
#define cin(vec) \
for (auto &i : vec) \
cin >> i
#define int long long int
#define ll long long
#define ld long double
#define PI acos(-1)
#define no cout << "No\n";
#define yes cout << "Yes\n";
#define ordered_set tree<pair<int,int>, null_type, less<pair<int,int>>, rb_tree_tag, tree_order_statistics_node_update>
using namespace std;
using namespace __gnu_pbds;
// #define ordered_set tree<int, null_type,less<>, rb_tree_tag,tree_order_statistics_node_update>// set
typedef tree<int, null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_multiset;
const int N = 100+5, mod = 1000000007;
const long long OO = 1e18;
void mousad()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
// put input file if needed as input in problem
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
#ifndef ONLINE_JUDGE
#define cout cerr
cerr.tie(0);
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stderr);
// freopen("output.txt", "w", stdout);
#endif
}
// Variadic print function for debugging
template <typename... Args>
void print(Args... args)
{
((cout << args << " "), ...);
cout << endl;
}
template <typename T = int>
istream &operator>>(istream &in, vector<T> &v)
{
for (auto &x : v)
in >> x;
return in;
}
// Overload for vector
template <typename T = int>
ostream &operator<<(ostream &out, const vector<T> &v)
{
for (const T &x : v)
out << x << ' ';
return out;
}
//______________________________________________________________________________________//
int n , turn = 0;
pair<int,int> mx = make_pair(-1,-1);
int vis[N];
vector<int> adj[N];
void dfs (int node = 1 ,int depth = 0) {
vis[node]++;
if (depth > mx.first)
mx.first = depth , mx.second = node;
for (auto &neighbour : adj[node]) {
if (vis[neighbour] == turn)
dfs(neighbour, depth + 1);
}
}
void solve() {
cin >> n ;
for (int i = 0; i < n-1; i++) {
int u , v; cin >> u >> v ;
adj[u].push_back(v);
adj[v].push_back(u);
}
dfs();
turn++;
dfs(mx.second);
cout << mx.first << endl;
}
signed main() {
mousad();
int t = 1;
//cin >> t;
for (int i = 1; i <= t; i++) {
//cerr << "Scenario #" << i << ":"<< endl;
solve();
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+CiNkZWZpbmUgYWxsKHMpIHMuYmVnaW4oKSwgcy5lbmQoKQojZGVmaW5lIGNpbih2ZWMpICAgICAgICBcCiAgICBmb3IgKGF1dG8gJmkgOiB2ZWMpIFwKICAgIGNpbiA+PiBpCiNkZWZpbmUgaW50IGxvbmcgbG9uZyBpbnQKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBsZCBsb25nIGRvdWJsZQojZGVmaW5lIFBJIGFjb3MoLTEpCiNkZWZpbmUgbm8gY291dCA8PCAiTm9cbiI7CiNkZWZpbmUgeWVzIGNvdXQgPDwgIlllc1xuIjsKI2RlZmluZSBvcmRlcmVkX3NldCB0cmVlPHBhaXI8aW50LGludD4sIG51bGxfdHlwZSwgbGVzczxwYWlyPGludCxpbnQ+PiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7Ci8vICNkZWZpbmUgb3JkZXJlZF9zZXQgdHJlZTxpbnQsIG51bGxfdHlwZSxsZXNzPD4sIHJiX3RyZWVfdGFnLHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT4vLyBzZXQKdHlwZWRlZiB0cmVlPGludCwgbnVsbF90eXBlLCBsZXNzX2VxdWFsPGludD4sIHJiX3RyZWVfdGFnLCB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+IG9yZGVyZWRfbXVsdGlzZXQ7CmNvbnN0IGludCBOID0gMTAwKzUsIG1vZCA9IDEwMDAwMDAwMDc7CmNvbnN0IGxvbmcgbG9uZyBPTyA9IDFlMTg7Cgp2b2lkIG1vdXNhZCgpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY291dC50aWUoMCk7CiAgICAvLyBwdXQgaW5wdXQgZmlsZSBpZiBuZWVkZWQgYXMgaW5wdXQgaW4gcHJvYmxlbQogICAgLy8gZnJlb3BlbigiaW5wdXQudHh0IiwgInIiLCBzdGRpbik7CiAgICAvLyBmcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwojaWZuZGVmIE9OTElORV9KVURHRQojZGVmaW5lIGNvdXQgY2VycgogICAgY2Vyci50aWUoMCk7CiAgICBmcmVvcGVuKCJpbnB1dC50eHQiLCAiciIsIHN0ZGluKTsKICAgIGZyZW9wZW4oIm91dHB1dC50eHQiLCAidyIsIHN0ZGVycik7CiAgICAvLyBmcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwojZW5kaWYKfQovLyBWYXJpYWRpYyBwcmludCBmdW5jdGlvbiBmb3IgZGVidWdnaW5nCnRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgp2b2lkIHByaW50KEFyZ3MuLi4gYXJncykKewogICAgKChjb3V0IDw8IGFyZ3MgPDwgIiAiKSwgLi4uKTsKICAgIGNvdXQgPDwgZW5kbDsKfQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IGludD4KaXN0cmVhbSAmb3BlcmF0b3I+Pihpc3RyZWFtICZpbiwgdmVjdG9yPFQ+ICZ2KQp7CiAgICBmb3IgKGF1dG8gJnggOiB2KQogICAgICAgIGluID4+IHg7CiAgICByZXR1cm4gaW47Cn0KLy8gT3ZlcmxvYWQgZm9yIHZlY3Rvcgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IGludD4Kb3N0cmVhbSAmb3BlcmF0b3I8PChvc3RyZWFtICZvdXQsIGNvbnN0IHZlY3RvcjxUPiAmdikKewogICAgZm9yIChjb25zdCBUICZ4IDogdikKICAgICAgICBvdXQgPDwgeCA8PCAnICc7CiAgICByZXR1cm4gb3V0Owp9Ci8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwppbnQgbiAsIHR1cm4gPSAwOwpwYWlyPGludCxpbnQ+IG14ID0gbWFrZV9wYWlyKC0xLC0xKTsKaW50IHZpc1tOXTsKdmVjdG9yPGludD4gYWRqW05dOwp2b2lkIGRmcyAoaW50IG5vZGUgPSAxICxpbnQgZGVwdGggPSAwKSB7CiAgICB2aXNbbm9kZV0rKzsKICAgIGlmIChkZXB0aCA+IG14LmZpcnN0KQogICAgICAgIG14LmZpcnN0ID0gZGVwdGggLCBteC5zZWNvbmQgPSBub2RlOwogICAgZm9yIChhdXRvICZuZWlnaGJvdXIgOiBhZGpbbm9kZV0pIHsKICAgICAgICBpZiAodmlzW25laWdoYm91cl0gPT0gdHVybikKICAgICAgICAgICAgZGZzKG5laWdoYm91ciwgZGVwdGggKyAxKTsKICAgIH0KfQp2b2lkIHNvbHZlKCkgewogICAgY2luID4+IG4gOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuLTE7IGkrKykgewogICAgICAgIGludCB1ICwgdjsgY2luID4+IHUgPj4gdiA7CiAgICAgICAgYWRqW3VdLnB1c2hfYmFjayh2KTsKICAgICAgICBhZGpbdl0ucHVzaF9iYWNrKHUpOwogICAgfQogICAgZGZzKCk7CiAgICB0dXJuKys7CiAgICBkZnMobXguc2Vjb25kKTsKICAgIGNvdXQgPDwgbXguZmlyc3QgPDwgZW5kbDsKfQpzaWduZWQgbWFpbigpIHsKICAgIG1vdXNhZCgpOwogICAgaW50IHQgPSAxOwogICAgLy9jaW4gPj4gdDsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHQ7IGkrKykgewogICAgICAgIC8vY2VyciA8PCAiU2NlbmFyaW8gIyIgPDwgaSAgPDwgIjoiPDwgZW5kbDsKICAgICAgICBzb2x2ZSgpOwogICAgfQp9Cg==