#include <bits/stdc++.h>
#define ll long long

using namespace std;

const int MOD = 1e9 + 7;

void solve(){
	int n;
	cin >> n;
	
	vector<vector<int>> g(n + 1, vector<int>());
	
	for(int i = 2; i <= n; i++){
		int x;
		cin >> x;
		g[x].push_back(i);
	}
	
	int ans = n;
	vector<int> dp(n + 1, 0);
	auto dfs = [&](int x, auto && self) -> void {
		for(auto y: g[x]){
			self(y, self);
		}
		
		multiset<int> p;
		
		for(auto y: g[x]){
			p.insert(dp[y]);
		}
		if(!p.size())return;
		
		while(p.size() > 2){
			auto x = *(p.begin());
			p.erase(p.find(x));
			auto y = *(p.begin());
			p.erase(p.find(y));
			p.insert(max(x, y) + 1);
		}
		int h = *(p.begin());
		p.erase(p.find(h));
		if(p.size()){
			int g = *(p.begin());
			dp[x] = max(g, h) + 1;
		}
		else dp[x] = h + 1;
	};
	dfs(1, dfs);
	
	cout << dp[1] << "\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;
}