//﷽ [Bismillaahir Rahmaanir Raheem]
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define ul unsigned long long int
#define ld long double
#define TT int TC;cin>>TC;for(int ti=1;ti<=TC;ti++)
#define TT1 int TC=1;for(int ti=1;ti<=TC;ti++)
#define fastio ios_base::sync_with_stdio(0); cin.tie(0);
#define YES cout<<"YES"<<endl
#define NO cout<<"NO"<<endl
#define ans_YN if(ans)YES;else NO;
#define pb push_back
#define pr_q priority_queue
#define F first
#define S second
#define MP make_pair
#define UB upper_bound
#define LB lower_bound
#define B begin()
#define E end()
//#define endl "\n"
ll ceill(ll a,ll b){if(a>=0){if(a%b==0)return a/b;else return a/b+1;}else return a/b;}//Here b>0 for being divisor
ll flr(ll a, ll b){if(a>=0){return a/b;} else {if(a%b==0) return a/b; else return a/b-1;}}//Here b>0 for being divisor
ll GCD(ll a, ll b){ ll ans=__gcd(a,b);if(ans<0)ans=-ans;return ans;}
ll LCM(ll a, ll b){ return (a*b)/(GCD(a,b));}
ll rem(ll a, ll b){ if(a>=0) return a%b; else{a=-a; return (b-a%b)%b;}}
template <typename T> void getunique(vector<T>&a){a.resize(unique(a.begin(),a.end())-a.begin());}
void getunique(string& a){a.resize(unique(a.begin(),a.end())-a.begin());}
template <typename T> void getunique(T a[], ll& n){n=unique(a,a+n)-a;}
ll const mod=1e9+7;
ll const AND=1073741823;
void dfs(ll s, vector<ll>g[], vector<ll>&l){
for(auto u:g[s]){
l[u]=l[s]+1;
dfs(u,g,l);
}
}
void solve()
{
ll n;
cin>>n;
ll a[n+1];
vector<ll>g[n+1];
for(int i=2;i<=n;i++){
cin>>a[i];
g[a[i]].pb(i);
}
vector<ll>l(n+1);
vector<ll>lvl(n);
dfs(1,g,l);
for(int i=1;i<=n;i++){
lvl[l[i]]++;
}
ll ans=0;
ll rem=0;
for(int i=1;i<n;i++){
if(lvl[i]>1){
ans++;
rem+=lvl[i]-2;
}
else if(lvl[i]==1){
if(rem){
ans++;
rem--;
}
}
}
ans+=rem/2;
cout<<ans<<endl;
}
int main()
{
fastio
TT
{
solve();
}
return 0;
}