#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
int n;
int a[maxn];
int t;
void solve() {
    cin>>n;
    for(int i=1 ; i<=n ; i++) cin>>a[i];
    bool bruh=false;
    if(n%2==1) cout<<"Second\n";
    else {
        sort(a+1,a+1+n);
        int cnt=0;
        for(int i=2 ; i<=n ; i+=2) {
            if(a[i]!=a[i-1]) bruh=true;
        }
        if(!bruh) cout<<"Second\n";
        else cout<<"First\n";
    }
}
signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    cin>>t;
    while(t--) {
        solve();
    }
}

#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5+1000;
int n,q,c[maxn],fa[maxn];
map<int,int> a[maxn];
void read(int &x)
{
	char ch;bool ok;
	for(ok=0,ch=getchar();!isdigit(ch);ch=getchar()) if(ch=='-') ok=1;
	for(x=0;isdigit(ch);x=x*10+ch-'0',ch=getchar()); if(ok) x=-x;
}
int getfa(int x)
{
	if(fa[x]==x) return x;
	else return fa[x]=getfa(fa[x]);
}
void join(int x,int y)
{
	if(getfa(x)==getfa(y)) return;
	if(a[getfa(x)].size()<a[getfa(y)].size()) swap(x,y);
	for(pair<int,int>lll:a[getfa(y)]) a[getfa(x)][lll.first]+=lll.second;
	fa[getfa(y)]=getfa(x);
}
int main()
{
	read(n),read(q);
	for(int i=1;i<=n;i++) read(c[i]);
	for(int i=1;i<=n;i++) fa[i]=i;
	for(int i=1;i<=n;i++) a[i][c[i]]++;
	while(q--)
	{
		int x,y,z;
		read(x),read(y),read(z);
		if(x==1) join(y,z);
		else printf("%d\n",a[getfa(y)][z]);
	}
	return 0;
}
