#include <algorithm>
#include <cmath>
#include <functional>
#include <iomanip>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <string>
#include <vector>
using namespace std;
using ll = long long;
#define rep(i, j, n) for (int i = j; i < (n); ++i)
#define rrep(i, j, n) for (int i = (n)-1; j <= i; --i)

int main() {
	cin.tie(0)->sync_with_stdio(0);
	int t; cin >> t;
	while (t--) {
		int n; cin >> n;
		vector<ll> a(n);
		rep(i, 0, n) cin >> a[i];
		// x := 全部出した瞬間の全ての皿のxor
		// nが偶数
		// 先行: 全部出したとき先行 x!=0を目指す
		// 後攻: x=0
		// この場合は先行がでかいほうからとっていき同じ山に積むと、すべて同じでない限りx!=0になる。
		// 厳密には偶数indexの和>奇数indexの和となれば先行の勝ち
		
		// nが奇数 
		// 先行: 全部出したとき後攻 x=0を目指す
		// 後攻: 全部出したとき先行 x!=0を目指す
		// 後攻が勝てそう. 先行が初手で何を選んでも、後攻はそれに一番でかいのを乗せれば最大の山が構成できる?
		if (n & 1)cout << "Second";
		else {
			sort(a.rbegin(), a.rend());
			ll even = 0, odd = 0;
			for (int i = 0; i < n; ++i) {
				if (i & 1) odd += a[i];
				else even += a[i];
			}
			if (even > odd) cout << "First";
			else cout << "Second";
		}
		cout << '\n';
	}
	return 0;
}
#include<bits/stdc++.h>
using namespace std;

#define int long long
#define rep(i,n) for(int i=0;i<n;i++)

int T, N;
int A[100010];

signed main()
{
    cin >> T;
    while(T--)
    {
        cin >> N;
        rep(i, N)cin >> A[i];

        if(N % 2) cout << "Second" << endl;
        else
        {
            map<int, int> mp;
            rep(i, N)mp[A[i]]++;
            bool is_first = false;
            for(auto e : mp)
            {
                if(e.second % 2 == 1)
                {
                    is_first = true;
                }
            }

            if(is_first)cout << "First" << endl;
            else cout << "Second" << endl;
        }
    }
    return 0;
}
