#include<bits/stdc++.h>
using namespace std;
int parad[1000003];
vector<vector<int>> vec;
int maxwyn=0;
int max_dfs(int n)
{
int maks1=0;
int maks2=0;
for(auto a:vec[n])
{
int xd=max_dfs(a);
if(maks1<=xd)
{
maks2=maks1;
maks1=xd;
}
else if(maks1>xd and xd>maks2)
{
maks2=xd;
}
}
int jajko = maks2+maks1-2+vec[n].size();
maxwyn=max(maxwyn, jajko );
return (maks1-2+vec[n].size());
}
int main()
{
int n,k;cin>>n>>k;
vec.resize(n+1);
for(int i=0;i<n-1;i++)
{
int a,b;cin>>a>>b;
vec[a].push_back(b);
vec[b].push_back(a);
}
max_dfs(1);
cout<<maxwyn;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IHBhcmFkWzEwMDAwMDNdOwp2ZWN0b3I8dmVjdG9yPGludD4+IHZlYzsKaW50IG1heHd5bj0wOwppbnQgbWF4X2RmcyhpbnQgbikKewogICAgaW50IG1ha3MxPTA7CiAgICBpbnQgbWFrczI9MDsKICAgIGZvcihhdXRvIGE6dmVjW25dKQogICAgewogICAgICAgIGludCB4ZD1tYXhfZGZzKGEpOwogICAgICAgIGlmKG1ha3MxPD14ZCkKICAgICAgICB7CiAgICAgICAgICAgIG1ha3MyPW1ha3MxOwogICAgICAgICAgICBtYWtzMT14ZDsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZihtYWtzMT54ZCBhbmQgeGQ+bWFrczIpCiAgICAgICAgewogICAgICAgICAgICBtYWtzMj14ZDsKICAgICAgICB9CiAgICB9CiAgICBpbnQgamFqa28gPSBtYWtzMittYWtzMS0yK3ZlY1tuXS5zaXplKCk7CiAgICBtYXh3eW49bWF4KG1heHd5biwgamFqa28gKTsKICAgIHJldHVybiAobWFrczEtMit2ZWNbbl0uc2l6ZSgpKTsKfQppbnQgbWFpbigpCnsKICAgIGludCBuLGs7Y2luPj5uPj5rOwogICAgdmVjLnJlc2l6ZShuKzEpOwogICAgZm9yKGludCBpPTA7aTxuLTE7aSsrKQogICAgewogICAgICAgIGludCBhLGI7Y2luPj5hPj5iOwogICAgICAgIHZlY1thXS5wdXNoX2JhY2soYik7CiAgICAgICAgdmVjW2JdLnB1c2hfYmFjayhhKTsKICAgIH0KICAgIG1heF9kZnMoMSk7CiAgICBjb3V0PDxtYXh3eW47Cn0=