#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <stack>
#include <queue>
#define rep(i,l,r) for(int i=(l);i<=(r);++i)
#define per(i,r,l) for(int i=(r);i>=(l);--i)
#define fi first
#define se second
using namespace std;
int T,n,x;
map<int,int> mp;
int main(){
	scanf("%d",&T);
	while(T--){
		scanf("%d",&n);mp.clear();
		rep(i,1,n) scanf("%d",&x),mp[x]++;
		if(n&1){puts("Second");continue;}
		bool fl=0;
		for(auto &x:mp) if(x.se&1){fl=1;break;}
		if(fl) puts("First");
		else puts("Second");
	}
	return 0;
}
#include <stdio.h>
#include <algorithm>
#include <vector>
#define MN 100000

int n;
std::vector<int> e[MN+5];

void add(int u,int v){
	e[u].push_back(v);
}

struct state{
	int c,f,s;
}s[MN+5];

void dfs(int u){
	s[u].c = 1;
	s[u].f = 1;
	s[u].s = 0;
	std::vector<int> ve[2];
	for(auto v:e[u]){	
		dfs(v);
		s[u].c += s[v].c;
		if(s[v].c&1){
			ve[1].push_back(v);
		}else{
			if(s[v].s>=s[v].f){
				s[u].s += s[v].s;
				s[u].f += s[v].f;
			}else{
				ve[0].push_back(v);
			}
		}
	}
	std::sort(ve[1].begin(),ve[1].end(),[](int a,int b)->bool{
		return s[a].s-s[a].f>s[b].s-s[b].f;
	});
	for(int i=0;i<(int)ve[1].size();i++){
		int v = ve[1][i];
		if(i&1){
			s[u].f += s[v].s;
			s[u].s += s[v].f;
		}else{
			s[u].s += s[v].s;
			s[u].f += s[v].f;
		}
	}
	if(ve[1].size()&1){
		for(auto v:ve[0]){
			s[u].f += s[v].s;
			s[u].s += s[v].f;
		}
	}else{
		for(auto v:ve[0]){
			s[u].s += s[v].s;
			s[u].f += s[v].f;
		}
	}
}

int main(){
	scanf("%d",&n);
	for(int i=2,f;i<=n;i++){
		scanf("%d",&f);
		add(f,i);
	}
	dfs(1);
	printf("%d\n",s[1].f);
}