#include<bits/stdc++.h>
using namespace std;
const long long MaxN = 1e6;
long long n;
vector<long long> a[MaxN+5];
bool visited[MaxN+5];
long long depth1[MaxN+5],depth2[MaxN+5];
void input()
{
cin >> n;
for(long long i=1;i<=n-1;i++)
{
long long u,v;
cin >> u >> v;
a[u].push_back(v);
a[v].push_back(u);
}
}
void dfs(long long i,vector<long long> a[],bool visited[],long long depth[])
{
stack<long long> st;
st.push(i);
visited[i]=true;
while(!st.empty())
{
long long u=st.top();
st.pop();
for(long long v:a[u])
{
if(!visited[v])
{
visited[v]=true;
depth[v]=depth[u]+1;
st.push(v);
}
}
}
}
void solve()
{
memset(visited,false,sizeof(visited));
memset(depth1,0,sizeof(depth1));
dfs(1,a,visited,depth1);
long long p1=1;
for(long long i=2;i<=n;i++)
{
if(depth1[i]>depth1[p1])
{
p1=i;
}
}
memset(visited,false,sizeof(visited));
memset(depth2,0,sizeof(depth2));
dfs(p1,a,visited,depth2);
long long p2=p1;
for(long long i=2;i<=n;i++)
{
if(depth2[i]>depth2[p2])
{
p2=i;
}
}
cout << depth2[p2];
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
input();
solve();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGxvbmcgbG9uZyBNYXhOID0gMWU2OwoKbG9uZyBsb25nIG47CnZlY3Rvcjxsb25nIGxvbmc+IGFbTWF4Tis1XTsKYm9vbCB2aXNpdGVkW01heE4rNV07CmxvbmcgbG9uZyBkZXB0aDFbTWF4Tis1XSxkZXB0aDJbTWF4Tis1XTsKCnZvaWQgaW5wdXQoKQp7CiAgICBjaW4gPj4gbjsKCiAgICBmb3IobG9uZyBsb25nIGk9MTtpPD1uLTE7aSsrKQogICAgewogICAgICAgIGxvbmcgbG9uZyB1LHY7CiAgICAgICAgY2luID4+IHUgPj4gdjsKICAgICAgICBhW3VdLnB1c2hfYmFjayh2KTsKICAgICAgICBhW3ZdLnB1c2hfYmFjayh1KTsKICAgIH0KfQoKdm9pZCBkZnMobG9uZyBsb25nIGksdmVjdG9yPGxvbmcgbG9uZz4gYVtdLGJvb2wgdmlzaXRlZFtdLGxvbmcgbG9uZyBkZXB0aFtdKQp7CiAgICBzdGFjazxsb25nIGxvbmc+IHN0OwogICAgc3QucHVzaChpKTsKICAgIHZpc2l0ZWRbaV09dHJ1ZTsKCiAgICB3aGlsZSghc3QuZW1wdHkoKSkKICAgIHsKICAgICAgICBsb25nIGxvbmcgdT1zdC50b3AoKTsKICAgICAgICBzdC5wb3AoKTsKCiAgICAgICAgZm9yKGxvbmcgbG9uZyB2OmFbdV0pCiAgICAgICAgewogICAgICAgICAgICBpZighdmlzaXRlZFt2XSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmlzaXRlZFt2XT10cnVlOwogICAgICAgICAgICAgICAgZGVwdGhbdl09ZGVwdGhbdV0rMTsKICAgICAgICAgICAgICAgIHN0LnB1c2godik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCnZvaWQgc29sdmUoKQp7CiAgICBtZW1zZXQodmlzaXRlZCxmYWxzZSxzaXplb2YodmlzaXRlZCkpOwogICAgbWVtc2V0KGRlcHRoMSwwLHNpemVvZihkZXB0aDEpKTsKCiAgICBkZnMoMSxhLHZpc2l0ZWQsZGVwdGgxKTsKCiAgICBsb25nIGxvbmcgcDE9MTsKCiAgICBmb3IobG9uZyBsb25nIGk9MjtpPD1uO2krKykKICAgIHsKICAgICAgICBpZihkZXB0aDFbaV0+ZGVwdGgxW3AxXSkKICAgICAgICB7CiAgICAgICAgICAgIHAxPWk7CiAgICAgICAgfQogICAgfQoKICAgIG1lbXNldCh2aXNpdGVkLGZhbHNlLHNpemVvZih2aXNpdGVkKSk7CiAgICBtZW1zZXQoZGVwdGgyLDAsc2l6ZW9mKGRlcHRoMikpOwoKICAgIGRmcyhwMSxhLHZpc2l0ZWQsZGVwdGgyKTsKCiAgICBsb25nIGxvbmcgcDI9cDE7CgogICAgZm9yKGxvbmcgbG9uZyBpPTI7aTw9bjtpKyspCiAgICB7CiAgICAgICAgaWYoZGVwdGgyW2ldPmRlcHRoMltwMl0pCiAgICAgICAgewogICAgICAgICAgICBwMj1pOwogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8IGRlcHRoMltwMl07Cn0KCmludCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CgogICAgaW5wdXQoKTsKICAgIHNvbHZlKCk7Cn0=