#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int MOD = 1e9 + 7;
void solve(){
int n, k;
cin >> n >> k;
vector<vector<int>> g(n, vector<int>());
for(int i = 1; i < n; i++){
int x;
cin >> x;
x--;
g[x].push_back(i);
g[i].push_back(x);
}
int s = 1, e = n - 1;
int mid;
int cnt = 0;
multiset<tuple<int, int, int>> ms;
auto dfs = [&](int x, int par, int c, bool toDo, auto && self) -> int {
int h = 1;
for(auto y: g[x]){
if(y != par){
h = max(h, self(y, x, c + 1, ((c % mid) == 0), self) + 1);
}
}
if(toDo)cnt++;
ms.insert({h, c, toDo});
return h;
};
int ans = n - 1;
while(s <= e){
mid = s + (e - s) / 2;
int tot = 0;
for(auto y: g[0]){
cnt = 0;
ms.clear();
int h = dfs(y, 0, 1, false, dfs);
int mi = h;
for(int i = 0; i < h; i++){
while(ms.size()){
auto [p, q, r] = *(ms.begin());
if(p > i)break;
ms.erase(ms.find({p, q, r}));
if(r)cnt--;
}
mi = min(mi, i + cnt);
}
tot += mi;
}
if(mid == 1){
cout << tot << "\n";
}
if(tot <= k){
ans = mid;
e = mid - 1;
}else{
s = mid + 1;
}
}
cout << ans << "\n";
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int t = 1;
cin >> t;
for(int i = 1; i <= t; i++){
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApjb25zdCBpbnQgTU9EID0gMWU5ICsgNzsKIAp2b2lkIHNvbHZlKCl7CglpbnQgbiwgazsKCWNpbiA+PiBuID4+IGs7Cgl2ZWN0b3I8dmVjdG9yPGludD4+IGcobiwgdmVjdG9yPGludD4oKSk7CiAKCWZvcihpbnQgaSA9IDE7IGkgPCBuOyBpKyspewoJCWludCB4OwoJCWNpbiA+PiB4OwoJCXgtLTsKCQlnW3hdLnB1c2hfYmFjayhpKTsKCQlnW2ldLnB1c2hfYmFjayh4KTsKCX0KIAoJaW50IHMgPSAxLCBlID0gbiAtIDE7CglpbnQgbWlkOwoJaW50IGNudCA9IDA7CgltdWx0aXNldDx0dXBsZTxpbnQsIGludCwgaW50Pj4gbXM7CglhdXRvIGRmcyA9IFsmXShpbnQgeCwgaW50IHBhciwgaW50IGMsIGJvb2wgdG9EbywgYXV0byAmJiBzZWxmKSAtPiBpbnQgewoJCWludCBoID0gMTsKCQlmb3IoYXV0byB5OiBnW3hdKXsKCQkJaWYoeSAhPSBwYXIpewoJCQkJaCA9IG1heChoLCBzZWxmKHksIHgsIGMgKyAxLCAoKGMgJSBtaWQpID09IDApLCBzZWxmKSArIDEpOwoJCQl9CgkJfQoJCWlmKHRvRG8pY250Kys7CgkJbXMuaW5zZXJ0KHtoLCBjLCB0b0RvfSk7CgkJcmV0dXJuIGg7Cgl9OwoJaW50IGFucyA9IG4gLSAxOwoJd2hpbGUocyA8PSBlKXsKCQltaWQgPSBzICsgKGUgLSBzKSAvIDI7CgoJCWludCB0b3QgPSAwOwoJCWZvcihhdXRvIHk6IGdbMF0pewoJCQljbnQgPSAwOwoJCQltcy5jbGVhcigpOwoJCQlpbnQgaCA9IGRmcyh5LCAwLCAxLCBmYWxzZSwgZGZzKTsKCQkJaW50IG1pID0gaDsKCQkJZm9yKGludCBpID0gMDsgaSA8IGg7IGkrKyl7CgkJCQl3aGlsZShtcy5zaXplKCkpewoJCQkJCWF1dG8gW3AsIHEsIHJdID0gKihtcy5iZWdpbigpKTsKCQkJCQlpZihwID4gaSlicmVhazsKCQkJCQltcy5lcmFzZShtcy5maW5kKHtwLCBxLCByfSkpOwoJCQkJCWlmKHIpY250LS07CgkJCQl9CgkJCQltaSA9IG1pbihtaSwgaSArIGNudCk7CgkJCX0KCQkJdG90ICs9IG1pOwoJCX0KCQlpZihtaWQgPT0gMSl7CgkJCWNvdXQgPDwgdG90IDw8ICJcbiI7CgkJfQoJCQoJCWlmKHRvdCA8PSBrKXsKCQkJYW5zID0gbWlkOwoJCQllID0gbWlkIC0gMTsKCQl9ZWxzZXsKCQkJcyA9IG1pZCArIDE7CgkJfQogCgl9Cgljb3V0IDw8IGFucyA8PCAiXG4iOwogCn0KIAppbnQgbWFpbigpewoJaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CgljaW4udGllKG51bGxwdHIpOwogCglpbnQgdCA9IDE7CgljaW4gPj4gdDsKIAoJZm9yKGludCBpID0gMTsgaSA8PSB0OyBpKyspewoJCXNvbHZlKCk7Cgl9CglyZXR1cm4gMDsKfQo=