//g++ t.cpp -o t && t < p.txt
//d>p.txt&&t<p.txt&&t2<p.txt

#include <iostream> // プログラムの耳と口
#include <vector> // 超有能配列秘書
#include <algorithm> // みんな大好きソートと二分探索
#include <queue> // きゅーちゃん、だいすき
#include <string> // to_string
#include <functional> // 関数を変数に入れる子
#include <set> // 値の取得・挿入・削除を高速に
#include <map> // setの妹 これまた優秀
#include <random> // 乱択さん
#include <ctime> // へびになりたい
#include <bitset> // へびになった ｼｬｰ

// #include <atcoder/all>
// using namespace atcoder; // コンパイル重い

#define DB cerr<<"D"<<endl

using namespace std; using ll=long long; using ld=long double; const int INF=1e9; const ll LINF=1e18; const double dINF = 1e18; const ld ldINF = 1e18; const double EPS = 1e-6;
using P=pair<ll,ll>;
const ll M = 1e9+7;
ll mod_pow(ll x, ll a) { ll an = 1; while(a > 0) { if (a&1) an = an * x % M; x = x * x % M; a >>= 1;} return an;}
ll mod_pow(ll x, ll a, ll m) { ll an = 1; while(a > 0) { if (a&1) an = an * x % m; x = x * x % m; a >>= 1;} return an;}
void add(ll& x, ll y) {x+=y; x%=M;}; void mul(ll& x, ll y) {x*=y; x%=M;}; template<typename T, typename U> void chmax(T& x, U y) {if (x<y) x=y;}; template<typename T, typename U> void chmin(T& x, U y) {if (x>y) x=y;} bool vaild(int x, int y, int hh, int ww){return 0<=x&&x<hh&&0<=y&&y<ww;}
ll gcd(ll a, ll b) {if (b==0) return a; else return gcd(b, a%b);}
int keta(ll a) {int res=0; while(a>0) res+=a%10, a/=10; return res;}
const int up[]={1,-1,0,0}, lf[]={0,0,1,-1};

int main() {
  int _; cin>>_;
  while(_-->0) {
    int n; cin>>n;
    ll a[n]; for(int i=0;i<n;i++) cin>>a[i];
    if (n%2==0) {
      // 先手はXOR!=0にすれば勝ち
      sort(a,a+n,greater<ll>());
      ll an=0;
      for(int i=0;i<n;i++) {
        if (i%2==0) an+=a[i];
        else an-=a[i];
      }
      if (an==0) {
        cout<<"Second"<<endl;
      } else {
        cout<<"First"<<endl;
      }
    } else {
      // 必ず後手にXOR!=0で渡してしまう
      cout<<"Second"<<endl;
    }
  }
}
// ・配列の大きさok？　・priority_queueはgreater？　・debug消した？
// ・落ち着いて。提出まで4分待ってね……WJ……1/10……2/10……

// Thank you for making problems and running the contest

#define pb push_back
#define mp make_pair
#define fi first
#define se second 
#define all(...) begin(__VA_ARGS__) , end(__VA_ARGS__)
#define boost {ios_base::sync_with_stdio(false); cin.tie(); cout.tie();}

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef vector <int> vi;
typedef pair<int,int> PII;
typedef pair<ll,ll> PLL;
constexpr ll nax = 2e5+6969, INF = 2e9+6969;

struct P
{
	PLL x;
	PLL y;
	int typ;
	void op2()
	{
		PLL tmp = y;
		y = x;
		x = mp(-tmp.fi, -tmp.se);
		typ ^= 1;
	}
	void op1()
	{
		PLL tmp = x;
		x = y;
		y = mp(-tmp.fi, -tmp.se);
		typ ^= 1;
	}
	void op3(ll p)
	{
		x = mp(2*p - x.fi, -x.se);
	}
	void op4(ll p)
	{
		y = mp(2*p - y.fi, -y.se);
	}
	void f(PLL val)
	{
		if(typ) swap(val.fi, val.se);
		PLL tmp = mp(x.fi + x.se * val.fi, y.fi + y.se * val.se);
		cout << tmp.fi << " " << tmp.se << "\n";
	}
};

int n,m;
PLL point[nax], ans[nax];
P ops[nax];
bool rev[nax];
vector <pair<PLL,int>> Q;
P p;

int main()
{
	p.x = mp(0,1);
	p.y = mp(0,1);
	p.typ = 0;
	ops[0] = p;
	cin >> n;
	for(int i=1;i<=n;i++) cin >> point[i].fi >> point[i].se;
	cin >> m;
	for(int i=1;i<=m;i++) 
	{
		ll a,b = 0;
		cin >> a;
		if(a > 2) cin >> b;
		if(a == 1) p.op1();
		if(a == 2) p.op2();
		if(a == 3) p.op3(b);
		if(a == 4) p.op4(b);
		ops[i] = p;
	}
	int q;
	cin >> q;
	for(int i=1;i<=q;i++) 
	{
		ll a,b;
		cin >> a >> b;
		PLL tmp = point[b];
		ops[a].f(tmp);
	}
	return 0;
}
