#include <bits/stdc++.h>
using namespace std;
int n,m;
string ss[55];
int fa[55],sz[55],zx1,zx2,root;
vector<int> to[55];
void dfs(int now){
sz[now]=1;
int ok=1;
for(auto i:to[now]){
if(i==fa[now]) continue;
dfs(i);
sz[now]+=sz[i];
if(sz[i]>n/2) ok=0;
}
if(n-sz[now]<=n/2&&ok==1){
zx2=zx1,zx1=now;
}
}
string ms(int now,int from){
string s="1",tmp[55];
int pos=0;
for(int nxt:to[now]){
if(nxt==from) continue;
ms(nxt,now),tmp[++pos]=ms(nxt,now);
}
sort(tmp+1,tmp+1+pos);
for(int i=1;i<=pos;i++){
s+=tmp[i];
}
s+="0";
return s;
}
int main(){
cin>>m;
for(int i=1;i<=m;i++){
cin>>n;
for(int j=1;j<=55;i++){
to[j].resize(0,0);sz[j]=0;
}
for(int j=1;j<=n;j++){
cin>>fa[j];
if(fa[j]==0){ root=j;continue;}
to[fa[j]].emplace_back(j);
to[j].emplace_back(fa[j]);
}
dfs(1);
ss[i]=ms(zx1,0);
if(zx2) ss[i]=min(ss[i],ms(zx2,0));
}
for(int i=1;i<=m;i++){
for(int j=1;j<=m;j++){
if(ss[i]==ss[j]){
cout<<j<<endl;
break;
}
}
}
return 0;
}