#include<bits/stdc++.h>
using namespace std;
#define fastio ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
#define MOD 1000000007
#define ll long long int
const int N = 10005;
vector<int> adj[N], vis(N);
int maxD, maxNode;
void dfs(int root, int d) {
vis[root] = 1;
if(d > maxD) {
maxD = d;
maxNode = root;
}
for(auto child : adj[root]) {
if(!vis[child])
dfs(child, d + 1);
}
}
int main() {
fastio;
int n;
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(1, 0);
maxD = 0;
for(int i = 0; i < n + 1; i++) vis[i] = 0;
dfs(maxNode, 0);
cout << maxD;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAojZGVmaW5lIGZhc3RpbyBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTtjaW4udGllKE5VTEwpO2NvdXQudGllKE5VTEwpCiNkZWZpbmUgTU9EIDEwMDAwMDAwMDcKI2RlZmluZSBsbCBsb25nIGxvbmcgaW50CiAKY29uc3QgaW50IE4gPSAxMDAwNTsKdmVjdG9yPGludD4gYWRqW05dLCB2aXMoTik7CmludCBtYXhELCBtYXhOb2RlOwp2b2lkIGRmcyhpbnQgcm9vdCwgaW50IGQpIHsKCXZpc1tyb290XSA9IDE7CglpZihkID4gbWF4RCkgewoJCW1heEQgPSBkOwoJCW1heE5vZGUgPSByb290OwoJfQoJZm9yKGF1dG8gY2hpbGQgOiBhZGpbcm9vdF0pIHsKCQlpZighdmlzW2NoaWxkXSkKCQkJZGZzKGNoaWxkLCBkICsgMSk7Cgl9Cn0KIAppbnQgbWFpbigpIHsKIAoJZmFzdGlvOwogCglpbnQgbjsKCWNpbiA+PiBuOwogCglmb3IoaW50IGkgPSAwOyBpIDwgbiAtIDE7IGkrKykgewoJCWludCB1LCB2OwoJCWNpbiA+PiB1ID4+IHY7CgkJYWRqW3VdLnB1c2hfYmFjayh2KTsKCQlhZGpbdl0ucHVzaF9iYWNrKHUpOwoJfQogCglkZnMoMSwgMCk7CgltYXhEID0gMDsKCWZvcihpbnQgaSA9IDA7IGkgPCBuICsgMTsgaSsrKSB2aXNbaV0gPSAwOwoJZGZzKG1heE5vZGUsIDApOwoJY291dCA8PCBtYXhEOwogCglyZXR1cm4gMDsKfQog