#include<bits/stdc++.h>
using namespace std;
#define faster ios_base::sync_with_stdio(false); cin.tie(NULL)
#define fi first
#define se second
const int N = 1e5 + 7;
int n , cnt = 0 , k;
vector<int> a[N];
int tin[N] , h[N] , up[21][N];
void dfs(int u , int p){
tin[u] = ++cnt;
for (int v : a[u]) if (v != p){
h[v] = h[u] + 1;
up[0][v] = u;
dfs(v , u);
}
}
void inp(){
cin >> n >> k;
for (int i = 1 ; i < n ; ++i){
int u , v;
cin >> u >> v;
++u,++v;
a[u].push_back(v);
a[v].push_back(u);
}
h[1] = 1;
dfs(1 , 0);
for (int j = 1 ; j <= 20 ; ++j){
for (int i = 1 ; i <= n ; ++i){
up[j][i] = up[j - 1][up[j - 1][i]];
}
}
}
int lca(int u , int v){
if (h[u] < h[v]) swap(u , v);
for (int i = 20 ; i >= 0 ; --i) if(h[up[i][u]] >= h[v]){
u = up[i][u];
}
if (u == v) return u;
for (int i = 20 ; i >= 0 ; --i) if (up[i][u] != up[i][v]){
u = up[i][u];
v = up[i][v];
}
return up[0][u];
}
int d(int u , int v){
// if (u == 0 || v == 0) return 0;
// if (u == n + 1 || v == n + 1) return 0;
int p = lca(u , v);
return h[u] + h[v] - 2 * h[p];
}
int Cnt = 0;
set<pair<int , int>> st;
void Push(int id , int in){
st.insert({in , id});
if (st.size() == 1) return;
auto it = st.lower_bound({in , id});
auto it2 = it;
++it2;
if (it == st.begin()){
auto it1 = st.rbegin();
if (st.size() > 2) Cnt -= d(it1->se , it2->se);
Cnt += d(it->se , it2->se);
Cnt += d(it->se , it1->se);
return;
}
if (it2 == st.end()){
it2 = st.begin();
auto it1 = it;
--it1;
if (st.size() > 2) Cnt -= d(it1->se , it2->se);
Cnt += d(it->se , it2->se);
Cnt += d(it->se , it1->se);
return;
}
auto it1 = it;
--it1;
Cnt -= d(it1->se , it2->se);
Cnt += d(it->se , it2->se);
Cnt += d(it->se , it1->se);
}
void Erase(int id , int in){
auto it = st.lower_bound({in , id});
if (st.size() == 1){
st.erase(it);
return;
}
auto it2 = it;
++it2;
if (it == st.begin()){
auto it1 = st.rbegin();
if (st.size() > 2) Cnt += d(it1->se , it2->se);
Cnt -= d(it->se , it2->se);
Cnt -= d(it->se , it1->se);
st.erase(it);
return;
}
if (it2 == st.end()){
it2 = st.begin();
auto it1 = it;
--it1;
if (st.size() > 2) Cnt += d(it1->se , it2->se);
Cnt -= d(it->se , it2->se);
Cnt -= d(it->se , it1->se);
st.erase(it);
return;
}
auto it1 = it;
--it1;
Cnt += d(it1->se , it2->se);
Cnt -= d(it->se , it2->se);
Cnt -= d(it->se , it1->se);
st.erase(it);
}
void solve(){
int i = 1 , j = 1 , res = 1;
Push(1 , tin[1]);
while (i <= n){
while (j < n && Cnt <= k * 2){
++j;
Push(j , tin[j]);
}
if (Cnt > k * 2){
Erase(j , tin[j]);
--j;
}
res = max(res , j - i + 1);
Erase(i , tin[i]);
++i;
}
cout << res;
}
int main(){
// freopen("difmax.inp" , "r" , stdin);
// freopen("difmax.out" , "w" , stdout);
faster;
inp();
solve();
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBmYXN0ZXIgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUoTlVMTCkKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAoKY29uc3QgaW50IE4gPSAxZTUgKyA3OwppbnQgbiAsIGNudCA9IDAgLCBrOwp2ZWN0b3I8aW50PiBhW05dOwppbnQgdGluW05dICwgaFtOXSAsIHVwWzIxXVtOXTsKCnZvaWQgZGZzKGludCB1ICwgaW50IHApewogICAgdGluW3VdID0gKytjbnQ7CiAgICBmb3IgKGludCB2IDogYVt1XSkgaWYgKHYgIT0gcCl7CiAgICAgICAgaFt2XSA9IGhbdV0gKyAxOwogICAgICAgIHVwWzBdW3ZdID0gdTsKCiAgICAgICAgZGZzKHYgLCB1KTsKICAgIH0KfQoKdm9pZCBpbnAoKXsKICAgIGNpbiA+PiBuID4+IGs7CiAgICBmb3IgKGludCBpID0gMSA7IGkgPCBuIDsgKytpKXsKICAgICAgICBpbnQgdSAsIHY7CiAgICAgICAgY2luID4+IHUgPj4gdjsKICAgICAgICArK3UsKyt2OwogICAgICAgIGFbdV0ucHVzaF9iYWNrKHYpOwogICAgICAgIGFbdl0ucHVzaF9iYWNrKHUpOwogICAgfQoKICAgIGhbMV0gPSAxOwogICAgZGZzKDEgLCAwKTsKCiAgICBmb3IgKGludCBqID0gMSA7IGogPD0gMjAgOyArK2opewogICAgICAgIGZvciAoaW50IGkgPSAxIDsgaSA8PSBuIDsgKytpKXsKICAgICAgICAgICAgdXBbal1baV0gPSB1cFtqIC0gMV1bdXBbaiAtIDFdW2ldXTsKICAgICAgICB9CiAgICB9Cn0KCmludCBsY2EoaW50IHUgLCBpbnQgdil7CiAgICBpZiAoaFt1XSA8IGhbdl0pIHN3YXAodSAsIHYpOwoKICAgIGZvciAoaW50IGkgPSAyMCA7IGkgPj0gMCA7IC0taSkgaWYoaFt1cFtpXVt1XV0gPj0gaFt2XSl7CiAgICAgICAgdSA9IHVwW2ldW3VdOwogICAgfQoKICAgIGlmICh1ID09IHYpIHJldHVybiB1OwoKICAgIGZvciAoaW50IGkgPSAyMCA7IGkgPj0gMCA7IC0taSkgaWYgKHVwW2ldW3VdICE9IHVwW2ldW3ZdKXsKICAgICAgICB1ID0gdXBbaV1bdV07CiAgICAgICAgdiA9IHVwW2ldW3ZdOwogICAgfQoKICAgIHJldHVybiB1cFswXVt1XTsKfQoKaW50IGQoaW50IHUgLCBpbnQgdil7Ci8vICAgIGlmICh1ID09IDAgfHwgdiA9PSAwKSByZXR1cm4gMDsKLy8gICAgaWYgKHUgPT0gbiArIDEgfHwgdiA9PSBuICsgMSkgcmV0dXJuIDA7CiAgICBpbnQgcCA9IGxjYSh1ICwgdik7CgogICAgcmV0dXJuIGhbdV0gKyBoW3ZdIC0gMiAqIGhbcF07Cn0KCmludCBDbnQgPSAwOwpzZXQ8cGFpcjxpbnQgLCBpbnQ+PiBzdDsKCnZvaWQgUHVzaChpbnQgaWQgLCBpbnQgaW4pewogICAgc3QuaW5zZXJ0KHtpbiAsIGlkfSk7CiAgICBpZiAoc3Quc2l6ZSgpID09IDEpIHJldHVybjsKICAgIGF1dG8gaXQgPSBzdC5sb3dlcl9ib3VuZCh7aW4gLCBpZH0pOwogICAgYXV0byBpdDIgPSBpdDsKICAgICsraXQyOwoKICAgIGlmIChpdCA9PSBzdC5iZWdpbigpKXsKICAgICAgICBhdXRvIGl0MSA9IHN0LnJiZWdpbigpOwoKICAgICAgICBpZiAoc3Quc2l6ZSgpID4gMikgQ250IC09IGQoaXQxLT5zZSAsIGl0Mi0+c2UpOwogICAgICAgIENudCArPSBkKGl0LT5zZSAsIGl0Mi0+c2UpOwogICAgICAgIENudCArPSBkKGl0LT5zZSAsIGl0MS0+c2UpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmIChpdDIgPT0gc3QuZW5kKCkpewogICAgICAgIGl0MiA9IHN0LmJlZ2luKCk7CiAgICAgICAgYXV0byBpdDEgPSBpdDsKICAgICAgICAtLWl0MTsKCiAgICAgICAgaWYgKHN0LnNpemUoKSA+IDIpIENudCAtPSBkKGl0MS0+c2UgLCBpdDItPnNlKTsKICAgICAgICBDbnQgKz0gZChpdC0+c2UgLCBpdDItPnNlKTsKICAgICAgICBDbnQgKz0gZChpdC0+c2UgLCBpdDEtPnNlKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgYXV0byBpdDEgPSBpdDsKICAgIC0taXQxOwogICAgQ250IC09IGQoaXQxLT5zZSAsIGl0Mi0+c2UpOwogICAgQ250ICs9IGQoaXQtPnNlICwgaXQyLT5zZSk7CiAgICBDbnQgKz0gZChpdC0+c2UgLCBpdDEtPnNlKTsKfQoKdm9pZCBFcmFzZShpbnQgaWQgLCBpbnQgaW4pewogICAgYXV0byBpdCA9IHN0Lmxvd2VyX2JvdW5kKHtpbiAsIGlkfSk7CiAgICBpZiAoc3Quc2l6ZSgpID09IDEpewogICAgICAgIHN0LmVyYXNlKGl0KTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBhdXRvIGl0MiA9IGl0OwogICAgKytpdDI7CgogICAgaWYgKGl0ID09IHN0LmJlZ2luKCkpewogICAgICAgIGF1dG8gaXQxID0gc3QucmJlZ2luKCk7CgogICAgICAgIGlmIChzdC5zaXplKCkgPiAyKSBDbnQgKz0gZChpdDEtPnNlICwgaXQyLT5zZSk7CiAgICAgICAgQ250IC09IGQoaXQtPnNlICwgaXQyLT5zZSk7CiAgICAgICAgQ250IC09IGQoaXQtPnNlICwgaXQxLT5zZSk7CiAgICAgICAgc3QuZXJhc2UoaXQpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmIChpdDIgPT0gc3QuZW5kKCkpewogICAgICAgIGl0MiA9IHN0LmJlZ2luKCk7CiAgICAgICAgYXV0byBpdDEgPSBpdDsKICAgICAgICAtLWl0MTsKCiAgICAgICAgaWYgKHN0LnNpemUoKSA+IDIpIENudCArPSBkKGl0MS0+c2UgLCBpdDItPnNlKTsKICAgICAgICBDbnQgLT0gZChpdC0+c2UgLCBpdDItPnNlKTsKICAgICAgICBDbnQgLT0gZChpdC0+c2UgLCBpdDEtPnNlKTsKICAgICAgICBzdC5lcmFzZShpdCk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGF1dG8gaXQxID0gaXQ7CiAgICAtLWl0MTsKICAgIENudCArPSBkKGl0MS0+c2UgLCBpdDItPnNlKTsKICAgIENudCAtPSBkKGl0LT5zZSAsIGl0Mi0+c2UpOwogICAgQ250IC09IGQoaXQtPnNlICwgaXQxLT5zZSk7CgogICAgc3QuZXJhc2UoaXQpOwp9Cgp2b2lkIHNvbHZlKCl7CiAgICBpbnQgaSA9IDEgLCBqID0gMSAsIHJlcyA9IDE7CgogICAgUHVzaCgxICAsIHRpblsxXSk7CiAgICB3aGlsZSAoaSA8PSBuKXsKICAgICAgICB3aGlsZSAoaiA8IG4gJiYgQ250IDw9IGsgKiAyKXsKICAgICAgICAgICAgKytqOwogICAgICAgICAgICBQdXNoKGogLCB0aW5bal0pOwogICAgICAgIH0KICAgICAgICBpZiAoQ250ID4gayAqIDIpewogICAgICAgICAgICBFcmFzZShqICwgdGluW2pdKTsKICAgICAgICAgICAgLS1qOwogICAgICAgIH0KCiAgICAgICAgcmVzID0gbWF4KHJlcyAsIGogLSBpICsgMSk7CiAgICAgICAgRXJhc2UoaSAsIHRpbltpXSk7CiAgICAgICAgKytpOwogICAgfQoKICAgIGNvdXQgPDwgcmVzOwp9CgppbnQgbWFpbigpewovLyAgICBmcmVvcGVuKCJkaWZtYXguaW5wIiAsICJyIiAsIHN0ZGluKTsKLy8gICAgZnJlb3BlbigiZGlmbWF4Lm91dCIgLCAidyIgLCBzdGRvdXQpOwogICAgZmFzdGVyOwogICAgaW5wKCk7CiAgICBzb2x2ZSgpOwogICAgcmV0dXJuIDA7Cn0K