#include<bits/stdc++.h>
using namespace std;
bool odw[1000003];
int parad[1000003];
vector<vector<int>> vec;
int maxwyn=0;
int max_dfs(int n)
{
odw[n]=1;
int maks1=0;
int maks2=0;
for(auto a:vec[n])
{
if(odw[a]==1)
continue;
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;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKYm9vbCBvZHdbMTAwMDAwM107CmludCBwYXJhZFsxMDAwMDAzXTsKdmVjdG9yPHZlY3RvcjxpbnQ+PiB2ZWM7CmludCBtYXh3eW49MDsKaW50IG1heF9kZnMoaW50IG4pCnsKICAgIG9kd1tuXT0xOwogICAgaW50IG1ha3MxPTA7CiAgICBpbnQgbWFrczI9MDsKICAgIGZvcihhdXRvIGE6dmVjW25dKQogICAgewogICAgICAgIGlmKG9kd1thXT09MSkKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgaW50IHhkPW1heF9kZnMoYSk7CiAgICAgICAgaWYobWFrczE8PXhkKQogICAgICAgIHsKICAgICAgICAgICAgbWFrczI9bWFrczE7CiAgICAgICAgICAgIG1ha3MxPXhkOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKG1ha3MxPnhkIGFuZCB4ZD5tYWtzMikKICAgICAgICB7CiAgICAgICAgICAgIG1ha3MyPXhkOwogICAgICAgIH0KICAgIH0KICAgIGludCBqYWprbyA9IG1ha3MyK21ha3MxLTIrdmVjW25dLnNpemUoKTsKICAgIG1heHd5bj1tYXgobWF4d3luLCBqYWprbyApOwogICAgcmV0dXJuIChtYWtzMS0yK3ZlY1tuXS5zaXplKCkpOwp9CmludCBtYWluKCkKewogICAgaW50IG4saztjaW4+Pm4+Pms7CiAgICB2ZWMucmVzaXplKG4rMSk7CiAgICBmb3IoaW50IGk9MDtpPG4tMTtpKyspCiAgICB7CiAgICAgICAgaW50IGEsYjtjaW4+PmE+PmI7CiAgICAgICAgdmVjW2FdLnB1c2hfYmFjayhiKTsKICAgICAgICB2ZWNbYl0ucHVzaF9iYWNrKGEpOwogICAgfQogICAgbWF4X2RmcygxKTsKICAgIGNvdXQ8PG1heHd5bjsKfQ==