#include<bits/stdc++.h>
using namespace std;
class Tree{
int N;
list<int> *adj;
int *dist;
int prevdis;
public:
Tree(int n){
this->N = n;
adj = new list<int>[N+1];
dist = new int[N+1];
memset(dist,-1,sizeof(dist));
prevdis = 0;
}
void AddEdge(int u,int v){
adj[u].push_back(v);
adj[v].push_back(u);
}
pair<int,int> DFS(int dist[],int u){
dist[u]=prevdis;
for(auto it=adj[u].begin();it!=adj[u].end();it++){
int t = *it;
if(dist[t]==-1){
dist[t] = dist[u]+1;
prevdis = dist[t];
DFS(dist,t);
}
}
int max_IND,max_dist=0;
for(int i=1;i<=N;i++){
if(dist[i]>max_dist){
max_dist = dist[i];
max_IND = i;
}
}
return make_pair(max_IND,max_dist);
}
void path(){
pair<int,int>t1,t2;
t1 = DFS(dist,1);
memset(dist,-1,sizeof(dist));
prevdis = 0;
t2 = DFS(dist,t1.first);
cout<<t2.second<<"\n";
}
};
int main(){
int t;
cin>>t;
Tree T(t);
int u,v;
for(int i=1;i<t;i++){
cin>>u>>v;
T.AddEdge(u,v);
}
T.path();
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCQl1c2luZyBuYW1lc3BhY2Ugc3RkOwoJCWNsYXNzIFRyZWV7CgkJCWludCBOOwoJCQlsaXN0PGludD4gKmFkajsKCQkJaW50ICpkaXN0OwoJCQlpbnQgcHJldmRpczsKCQkJcHVibGljOgoKCQkJVHJlZShpbnQgbil7CgkJCQl0aGlzLT5OID0gbjsKCQkJCWFkaiA9IG5ldyBsaXN0PGludD5bTisxXTsKCQkJCWRpc3QgPSBuZXcgaW50W04rMV07CgkJCQltZW1zZXQoZGlzdCwtMSxzaXplb2YoZGlzdCkpOwoJCQkJcHJldmRpcyA9IDA7CgkJCX0KCgkJCXZvaWQgQWRkRWRnZShpbnQgdSxpbnQgdil7CgkJCQlhZGpbdV0ucHVzaF9iYWNrKHYpOwoJCQkJYWRqW3ZdLnB1c2hfYmFjayh1KTsKCQkJfQoKCQkJcGFpcjxpbnQsaW50PiBERlMoaW50IGRpc3RbXSxpbnQgdSl7CgkJCQlkaXN0W3VdPXByZXZkaXM7CgkJCQlmb3IoYXV0byBpdD1hZGpbdV0uYmVnaW4oKTtpdCE9YWRqW3VdLmVuZCgpO2l0KyspewoJCQkJCWludCB0ID0gKml0OwoJCQkJCWlmKGRpc3RbdF09PS0xKXsKCQkJCQkJZGlzdFt0XSA9IGRpc3RbdV0rMTsKCQkJCQkJcHJldmRpcyA9IGRpc3RbdF07CgkJCQkJCURGUyhkaXN0LHQpOwoJCQkJCX0KCQkJCX0KCgkJCQlpbnQgbWF4X0lORCxtYXhfZGlzdD0wOwoJCQkJZm9yKGludCBpPTE7aTw9TjtpKyspewoJCQkJCWlmKGRpc3RbaV0+bWF4X2Rpc3QpewoJCQkJCQltYXhfZGlzdCA9IGRpc3RbaV07CgkJCQkJCW1heF9JTkQgPSBpOwoJCQkJCX0KCQkJCX0KCgkJCQlyZXR1cm4gbWFrZV9wYWlyKG1heF9JTkQsbWF4X2Rpc3QpOwoJCQl9CgoKCQkJdm9pZCBwYXRoKCl7CgkJCQkgCgkJCQlwYWlyPGludCxpbnQ+dDEsdDI7CgkJCQl0MSA9IERGUyhkaXN0LDEpOwoJCQkJbWVtc2V0KGRpc3QsLTEsc2l6ZW9mKGRpc3QpKTsKCQkJCXByZXZkaXMgPSAwOwoJCQkJdDIgPSBERlMoZGlzdCx0MS5maXJzdCk7CgkJCQljb3V0PDx0Mi5zZWNvbmQ8PCJcbiI7CgkJCX0KCQl9OwoKCgkJaW50IG1haW4oKXsKCQkJaW50IHQ7CgkJCWNpbj4+dDsKCQkJVHJlZSBUKHQpOwoJCQlpbnQgdSx2OwoJCQlmb3IoaW50IGk9MTtpPHQ7aSsrKXsKCQkJCWNpbj4+dT4+djsKCQkJCVQuQWRkRWRnZSh1LHYpOwoJCQl9CgkJCVQucGF0aCgpOwoJCQkgICByZXR1cm4gMDsKCQl9ICAgICAgIAoKCg==