#pragma GCC optimize("O3")
#include <bits/stdc++.h>
#define int long long
using namespace std;
#define endl '\n'
#define br cout<<endl
#define mem(a) memset(a,0,sizeof(a))
const double pi=3.141592653589793238;
#define d(x) cout<<x<<endl;
#define de(x) cout<<#x<<" "<<x<<endl;
#define pb push_back
#define mp make_pair
#define F first
#define S second
#define rev(a) reverse(a.begin(),a.end())
//const int inf = 100000000000000000;
#define maxn 1000005
int mod = (int)(1e9 + 7);
#define IOS ios :: sync_with_stdio(false); cin.tie(0); cout.tie(0)
#define all(x) x.begin(),x.end()
//#define f(i,n) for(int i=1;i<=n;i++)
#define fp(i,k,n) for(int i=k;i<=n;i+=1)
#define fn(i,k,n) for(int i=k;i>=n;i-=1)
void pv(vector<int> v){  for (int i = 0; i < v.size(); ++i){cout<<v[i]<<" ";}cout<<endl;}
void pa(int a[],int n,int p){for (int i = p; i < n+p; ++i){cout<<a[i]<<" ";}cout<<endl;}
int modexp(int x,int y) {
   int res = 1;
   x = x % mod;
   while (y > 0){
       if (y & 1LL)
           res = (res*x) % mod;
       y = y>>1;
       x = (x*x) % mod;  
   }
   return res;
}
int invmod(int a) {
    return modexp(a,mod-2);
}
// vector<int> edge[maxn];
// void ipgraph(int n,int m) {
//     fp(i,1,n) edge[i].clear();
//     if(m==0) return;
//    fp(i,1,m) {
//        int a,b;
//        cin>>a>>b;
//        edge[a].pb(b);
//        edge[b].pb(a);
//    } 
// }
/*
void dfs(int node,int p)
{
    for(int u : edge[node]) 
    {
        if(u!=p)
        {
            dfs(u,node);
        }
    }
}
*/
//////////////////////////////////////////////////////////////////////////////////
void solve()
{
    int n;
    cin>>n;
    int a[n+1];
    int xr = 0;
    map<int,int> m;
    fp(i,1,n)
    {
        cin>>a[i];
        m[a[i]]++;
        xr^=a[i];
    }
    if(n%2) d("Second")
    else
    {
        for(auto p : m)
        {
            if(p.S%2)
            {
                d("First")
                return ;
            }
        }
        d("Second")
    }
}   
int32_t main()
{
   IOS;
   #ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin); 
    freopen("output.txt", "w", stdout); 
    #endif
    std::cout << std::setprecision(20);
   int t=1;
    cin>>t;
   fp(i,1,t)
   {
       //cout<<"Case #"<<i<<": ";
       solve();
   }
}
#include <iostream>
#include <vector>
#include <functional>
#include <string>
using namespace std;

string naive(int N, vector<long long> a)
{
    vector<bool> U(N);
    vector<long long> T;

    function<int(int)> f = [&](int t) -> int
    {
        bool remain = false;
        bool win = false;
        for (int i=0; i<N; i++)
            if (!U[i])
            {
                remain = true;
                U[i] = true;
                for (int j=0; j<(int)T.size(); j++)
                {
                    T[j] += a[i];
                    if (!f(1-t))
                        win = true;
                    T[j] -= a[i];
                }
                T.push_back(a[i]);
                if (!f(1-t))
                    win = true;
                T.pop_back();
                U[i] = false;
            }
        if (remain)
            return win;

        long long x = 0;
        for (int t: T)
            x ^= t;
        return x!=0;
    };

    return f(0) ? "First" : "Second";
}

#include <algorithm>

string solve(int N, vector<long long> a)
{
    sort(a.begin(), a.end());

    if (N%2==1)
        return "Second";

    long long x = 0;
    for (long long t: a)
        x ^= t;
    if (x!=0)
        return "First";

    bool f = false;
    for (int i=0; i<N; i+=2)
        if (a[i]!=a[i+1])
            f = true;
    if (f)
        return "First";

    return "Second";
}

int main()
{
    /*
    N = 1
        -> Second

    N = 2
        xor!=0 -> First
        xor==0 -> Second

    N = 3
        -> Second

    N = 4
        xor!=0 -> First
        xor==0 -> Secnd ?
         2 5 3 4 First 0
         9 6 8 7 First 0
         4 9 8 5 First 0
          3 1 4 6 First 0
         1 6 2 5 First 0
         6 1 3 4 First 0
         6 1 2 5 First 0
          54 58 84 88 First 0
         1 23 65 87 First 0
         3 8 48 59 First 0
         14 16 72 86 First 0
         43 44 56 63 First 0
         38 41 51 60 First 0

    N = 5
        -> Second

    N = 6
        xor!=0 -> First
        xor==0 -> Second ?
         9 3 10 2 4 6 First 0
         3 3 3 7 5 1 First 0
         6 6 5 1 3 7 First 0
          11 23 35 38 39 62 First 0
         22 22 41 63 65 87 First 0
         9 9 33 36 48 53 First 0
         5 11 32 45 89 90 First 0
         48 58 86 91 99 100 First 0
         45 46 60 63 70 70 First 0
         1 13 65 71 81 91 First 0

    */
    //for (int i=0; i<10000; i++)
    //{
    //    int N = rand()%6+1;
    //    vector<long long> a(N);
    //    for (int i=0; i<N; i++)
    //        a[i] = rand()%10+1;
    //    /*
    //    sort(a.begin(), a.end());
    //    int x = 0;
    //    for (int t: a)
    //        x ^= t;
    //    string ans = naive(N, a);
    //    bool f = false;
    //    for (int i=0; i<N; i+=2)
    //        if (a[i]!=a[i+1])
    //            f = true;
    //    if (ans=="Second" && f)
    //    {
    //        for (int x: a)
    //            cout<<" "<<x;
    //        cout<<" "<<ans<<" "<<x;
    //        for (int i=0; i<N/2; i++)
    //            cout<<" "<<a[i]+a[N-i-1];
    //        cout<<endl;
    //    }
    //    */
    //    string an = naive(N, a);
    //    string as = solve(N, a);
    //    if (an!=as)
    //        cout<<"!"<<endl;
    //}

    int T;
    cin>>T;
    for (int i=0; i<T; i++)
    {
        int N;
        cin>>N;
        vector<long long> a(N);
        for (long long &x: a)
            cin>>x;
        //cout<<naive(N, a)<<endl;
        cout<<solve(N, a)<<endl;
    }
}
