Two players called $\mathbf{P1}$ and $\textbf{P2}$ are playing a game with a starting number of stones. Player $1$ always plays first, and the two players move in alternating turns. The game's rules are as follows:

In a single move, a player can remove either $2$, $3$, or $5$ stones from the game board. 
If a player is unable to make a move, that player loses the game.

Given the starting number of stones, find and print the name of the winner.  $\mathbf{P1}$ is named First and $\textbf{P2}$ is named Second.  Each player plays optimally, meaning they will not make a move that causes them to lose the game if a winning move exists.

For example, if $n=4$, $\mathbf{P1}$ can make the following moves:  

$\mathbf{P1}$ removes $2$ stones leaving $2$. $\textbf{P2}$ will then remove $2$ stones and win.
$\mathbf{P1}$ removes $3$ stones leaving $1$. $\textbf{P2}$ cannot move and loses.

$\mathbf{P1}$ would make the second play and win the game.

Function Description

Complete the gameOfStones function in the editor below.  It should return a string, either First or Second.  

gameOfStones has the following parameter(s):

n: an integer that represents the starting number of stones

Input Format

The first line contains an integer $\boldsymbol{\boldsymbol{t}}$, the number of test cases. 

Each of the next $\boldsymbol{\boldsymbol{t}}$ lines contains an integer $n$, the number of stones in a test case.

Constraints

$1\le n,t\le100$

Output Format

On a new line for each test case, print First if the first player is the winner.  Otherwise print Second.

Sample Input
8
1
2
3
4
5
6
7
10

Sample Output
Second
First
First
First
First
First
Second
First

Explanation

In the sample, we have $t=8$ testcases.  

If $n=1$, $\mathbf{P1}$ can't make any moves and loses the game.

If $n=2$, $\mathbf{P1}$ removes $2$ stones and wins the game.

If $n=3$, $\mathbf{P1}$ removes $2$ stones in their first move, leaving $1$ stone on the board and winning the game.  

If $n=4$, $\mathbf{P1}$ removes $3$ stones in their first move, leaving $1$ stone on the board and winning the game.  

If $n=5$, $\mathbf{P1}$ removes all $5$ stones from the game board, winning the game.  

If $n=6$, $\mathbf{P1}$ removes $5$ stones in their first move, leaving $1$ stone on the board and winning the game.  

If $n=7$, $\mathbf{P1}$ can make any of the following three moves:

Remove $2$ stones, leaving $5$ stones on the board. $\textbf{P2}$ then removes $5$ stones, winning the game.  
Remove $3$ stones, leaving $4$ stones on the board. $\textbf{P2}$ then removes $3$ stones, leaving $1$ stone left on the board and winning the game.  
Remove $5$ stones, leaving $2$ stones on the board. $\textbf{P2}$ then removes the $2$ remaining stones and wins the game.  

All possible moves result in $\textbf{P2}$ winning.

If $n=10$, $\mathbf{P1}$ can remove either $2$ or $3$ stones to win the game.

Source: hackerrank | Difficulty: EASY
Tags: Game theory


Solutions:
First = [2, 3, 4, 5, 6, 9, 10]
Second = [1, 7, 8]
for i in range(11, 101):
	if i - 2 in Second or i - 3 in Second or i - 5 in Second:
		First.append(i)
	else:
		Second.append(i)
test = int(input())
for _ in range(test):
	n = int(input())
	if n in First:
		print('First')
	else:
		print('Second')


def get_winner(n):
	ans = [None] * (n + 1)
	ans[0] = False
	ans[1] = False
	for i in range(n + 1):
		if ans[i] == False:
			for j in [i + 2, i + 3, i + 5]:
				if j < n + 1:
					ans[j] = True
		elif ans[i] is None:
			for j in [i - 2, i - 3, i - 5]:
				if j > 0 and ans[j] != True:
					print('??', i, j, ans[j])
			ans[i] = False
			for j in [i + 2, i + 3, i + 5]:
				if j < n + 1:
					ans[j] = True
	return ans
w = get_winner(100)
for _ in range(int(input().strip())):
	print('First' if w[int(input().strip())] else 'Second')


label = {1: 'First', 2: 'Second'}
T = int(input())
testlist = []
for _ in range(T):
	testlist.append(int(input()))
stones = [0] * (max(testlist) + 1)
stones[0] = 2
stones[1] = 2
stones[2] = 1
stones[3] = 1
for n in range(4, max(testlist) + 1):
	if stones[n - 2] == 2 or stones[n - 3] == 2 or stones[n - 5] == 2:
		stones[n] = 1
	else:
		stones[n] = 2
for test in testlist:
	print(label[stones[test]])


T = int(input())
S = []
max_stones = 0
for tc in range(T):
	S.append(int(input()))
	if S[-1] > max_stones:
		max_stones = S[-1]
game = [0] * (max_stones + 1)
for i in range(2, max_stones + 1):
	if game[i - 2] == 0:
		game[i] = 1
	elif i - 3 >= 0 and game[i - 3] == 0:
		game[i] = 1
	elif i - 5 >= 0 and game[i - 5] == 0:
		game[i] = 1
for stones in S:
	if game[stones]:
		print('First')
	else:
		print('Second')


n = int(input())
wins = {}
wins[1] = False
wins[2] = True
wins[3] = True
wins[4] = True
wins[5] = True
for j in range(6, 101):
	j_wins = True
	if wins[j - 5] and wins[j - 3] and wins[j - 2]:
		j_wins = False
	wins[j] = j_wins
for i in range(n):
	check = int(input())
	if wins[check]:
		print('First')
	else:
		print('Second')


t = int(input())
while t > 0:
	t -= 1
	n = int(input())
	z = [0, 1]
	if n % 7 in z:
		print('Second')
	else:
		print('First')


win = [False, False, True, True, True, True]
for x in range(6, 102):
	win.append(not win[x - 2] or not win[x - 3] or (not win[x - 5]))
t = int(input())
for _ in range(t):
	n = int(input())
	print('First' if win[n] else 'Second')


games = int(input())
for i in range(games):
	stones = int(input())
	if stones % 7 == 1 or (stones % 7 == 0 and stones > 2):
		print('Second')
	else:
		print('First')


res = {}

def make_move(n):
	if n in res.keys():
		return res[n]
	if n == 1:
		res[n] = False
		return False
	if n <= 6:
		res[n] = True
		return True
	if make_move(n - 2) and make_move(n - 3) and make_move(n - 5):
		res[n] = False
		return False
	else:
		res[n] = True
		return True
for _ in range(int(input())):
	print('First' if make_move(int(input())) else 'Second')


sto = {}

def win(x):
	if x in sto:
		return sto[x]
	if x == 0:
		return False
	if x == 1:
		return False
	if x == 2:
		return True
	if x == 3:
		return True
	if x == 4:
		return True
	if x == 5:
		return True
	if x == 6:
		return True
	if x == 7:
		return False
	temp = not (win(x - 2) and win(x - 3) and win(x - 5))
	sto[x] = temp
	return temp
n = int(input())
for _ in range(n):
	x = int(input())
	if win(x):
		print('First')
	else:
		print('Second')


import functools

@functools.lru_cache()
def win(n):
	if n < 0:
		return True
	if n <= 1:
		return False
	return not all((win(n - k) for k in {2, 3, 5}))
for test in range(int(input())):
	print('Second First'.split()[win(int(input()))])
for n in range(100):
	if (n % 7 > 1) != win(n):
		print(n)


def findWinner(l):
	for x in l:
		if x % 7 == 0 or x % 7 == 1:
			print('Second')
		else:
			print('First')
T = int(input())
Tlist = []
for _ in range(T):
	line = int(input())
	Tlist.append(line)
findWinner(Tlist)


import functools

@functools.lru_cache(maxsize=None)
def g_o_s(n):
	moves = [2, 3, 5]
	if n == 1:
		return 'Second'
	elif n in moves:
		return 'First'
	else:
		for m in moves:
			if m <= n:
				result = g_o_s(n - m)
				if result == 'Second':
					return 'First'
		return 'Second'
import sys
n = int(input().strip())
for i in range(0, n):
	game = int(input().strip())
	print(g_o_s(game))


for _ in range(int(input())):
	print('First' if int(input()) % 7 > 1 else 'Second')


winner = [False] * 106
for i in range(101):
	if not winner[i]:
		winner[i + 2] = True
		winner[i + 3] = True
		winner[i + 5] = True
t = int(input())
for _ in range(t):
	n = int(input())
	if winner[n]:
		print('First')
	else:
		print('Second')


def fun():
	a = [0 for i in range(101)]
	a[1] = 0
	a[2] = 1
	a[3] = 1
	a[4] = 1
	a[5] = 1
	a[6] = 1
	for i in range(7, 101):
		if a[i - 2] == 0 or a[i - 3] == 0 or a[i - 5] == 0:
			a[i] = 1
		else:
			a[i] = 0
	return a
t = int(input())
arr = fun()
while t != 0:
	t -= 1
	n = int(input())
	if arr[n] == 1:
		print('First')
	else:
		print('Second')


import sys
dic = {}

def call(x):
	if x <= 1:
		return 0
	elif x in [2, 3, 5]:
		return 1
	if x in dic:
		return dic[x]
	state = 1
	state = state and call(x - 5)
	state = state and call(x - 3)
	state = state and call(x - 2)
	dic[x] = int(state == 0)
	return dic[x]
t = int(input())
for _ in range(t):
	x = int(input())
	if call(x) == 0:
		print('Second')
	else:
		print('First')


t = int(input())
arr = [0, 0, 1, 1, 2, 2, 3]
for i in range(t):
	n = int(input())
	n = n % 7
	if arr[n] == 0:
		print('Second')
	else:
		print('First')


N = [False] * 101
N[2] = True
N[3] = True
N[4] = True
N[5] = True
for i in range(6, 101):
	N[i] = not (N[i - 5] and N[i - 3] and N[i - 2])
T = int(input())
for i in range(T):
	n = int(input())
	if N[n]:
		print('First')
	else:
		print('Second')


t = int(input().strip())
for each in range(t):
	n = int(input().strip())
	if n % 7 == 0 or (n - 1) % 7 == 0:
		print('Second')
	else:
		print('First')


dic = {0: 0, 1: 0, 2: 1, 3: 1, 4: 1, 5: 1}
for i in range(6, 101):
	t1 = i - 2
	t2 = i - 3
	t3 = i - 5
	if dic[t1] == 0 or dic[t2] == 0 or dic[t3] == 0:
		dic[i] = 1
	else:
		dic[i] = 0
t = int(input())
for ii in range(t):
	n = int(input())
	if dic[n] == 1:
		print('First')
	else:
		print('Second')


for i in range(int(input())):
	print('First' if int(input()) % 7 > 1 else 'Second')


for t in range(int(input())):
	n = int(input())
	n = n % 7
	if n <= 1:
		print('Second')
	else:
		print('First')


t = int(input())
for i in range(t):
	n = int(input())
	if n % 7 == 0 or n % 7 == 1:
		print('Second')
	else:
		print('First')


from functools import lru_cache

@lru_cache()
def do_i_win(num_stones):
	moves = [2, 3, 5]
	if num_stones == 1:
		return False
	if num_stones in range(2, 7):
		return True
	return not all((do_i_win(num_stones - move) for move in moves))
for _ in range(int(input())):
	print('First' if do_i_win(int(input())) else 'Second')


class Tree:

	def __init__(self, cargo, left=None, right=None):
		self.cargo = cargo
		self.left = left
		self.right = right

	def __str__(self):
		return str(self.cargo)

def possible(n):
	p = 0
	if n - 2 > 0:
		p += 1
	if n - 3 > 0:
		p += 1
	if n - 5 > 0:
		p += 1
	return p

def winnext(n):
	if n - 2 == 0 or n - 3 == 0 or n - 5 == 0:
		return True
	return False

def sturn(t):
	if t == 1:
		return 2
	return 1

def setmem(i, cturn, w):
	if cturn == 1:
		mem[i] = w
	else:
		mem[i] = sturn(w)

def getmem(i, cturn):
	if cturn == 1:
		return mem[i]
	else:
		return sturn(mem[i])

def play(n, turn):
	if winnext(n):
		setmem(n, turn, turn)
		return turn
	p = possible(n)
	if p == 0:
		return sturn(turn)
	if mem[n - 2] != 0:
		r2 = getmem(n - 2, sturn(turn))
	else:
		r2 = play(n - 2, sturn(turn))
	if mem[n - 3] != 0:
		r3 = getmem(n - 3, sturn(turn))
	else:
		r3 = play(n - 3, sturn(turn))
	if mem[n - 5] != 0:
		r5 = getmem(n - 5, sturn(turn))
	else:
		r5 = play(n - 5, sturn(turn))
	if r2 == turn or r3 == turn or r5 == turn:
		setmem(n, turn, turn)
		return turn
	else:
		setmem(n, turn, sturn(turn))
		return sturn(turn)
t = int(input())
mem = [0] * 105
for e in range(t):
	n = int(input())
	res = 0
	if mem[n] != 0:
		res = mem[n]
	else:
		res = play(n, 1)
		setmem(n, 1, res)
	if res == 1:
		print('First')
	else:
		print('Second')


win = [False, False, True, True, True, True]
for i in range(6, 101):
	win.append(not (win[i - 2] and win[i - 3] and win[i - 5]))
t = int(input())
for _ in range(t):
	n = int(input())
	print('First' if win[n] else 'Second')


for _ in range(int(input())):
	n = int(input())
	n %= 7
	if n == 0 or n == 1:
		print('Second')
	else:
		print('First')


(r, t) = (['First', 'Second'], [0, 1])
for i in range(int(input())):
	print(r[int(input()) % 7 in t])


def populateWinMoves(data, i):
	if i == 0 or i == 2 or i == 3 or (i == 5) or (i == 4):
		data[i] = 0
	elif i == 1:
		data[i] = 1
	elif data[i - 5] == 0 and data[i - 3] == 0 and (data[i - 2] == 0):
		data[i] = 1
	else:
		data[i] = 0

def winner(moves):
	data = [-1] * (moves + 1)
	for i in range(moves + 1):
		populateWinMoves(data, i)
	return data[moves]
cases = int(input())
for i in range(cases):
	if winner(int(input())) == 0:
		print('First')
	else:
		print('Second')


cases = int(input())
while cases > 0:
	stones = int(input())
	if stones % 7 in [0, 1]:
		print('Second')
	else:
		print('First')
	cases -= 1


cases = int(input())
for i in range(cases):
	if int(input()) % 7 in [0, 1]:
		print('Second')
	else:
		print('First')


t = int(input())
for i in range(t):
	n = int(input())
	if n % 7 == 0:
		print('Second')
	elif n % 7 == 1:
		print('Second')
	else:
		print('First')


def play(n, current_player, l):
	if n in l:
		return not l[n]
	if n < 2:
		return current_player
	elif n == 2 or n == 3 or n == 5:
		return not current_player
	elif n == 4 or n == 6:
		return not current_player
	else:
		temp2 = play(n - 2, not current_player, l)
		if temp2 != current_player:
			return not current_player
		temp3 = play(n - 3, not current_player, l)
		if temp3 != current_player:
			return not current_player
		temp5 = play(n - 5, not current_player, l)
		if temp5 != current_player:
			return not current_player
		return current_player
T = int(input())
l = {}
for t in range(101):
	current_player = True
	current_player = play(t, current_player, l)
	l[t] = current_player
for t in range(T):
	n = int(input())
	if l[n]:
		print('Second')
	else:
		print('First')


t = int(input().strip())
for i in range(t):
	s = int(input().strip())
	if s % 7 not in [0, 1]:
		print('First')
	else:
		print('Second')


T = int(input())
N = []
for i in range(T):
	N.append(int(input()))
top = max(N) + 1
win = [False, False, True, True, True]
for i in range(5, top):
	win.append(not (win[i - 2] and win[i - 3] and win[i - 5]))
for n in N:
	print('First' if win[n] else 'Second')


win = [0] * 101
win[1] = False
win[2] = True
win[3] = True
win[4] = True
win[5] = True
for i in range(6, 101):
	if win[i - 5] == False or win[i - 3] == False or win[i - 2] == False:
		win[i] = True
	else:
		win[i] = False
T = int(input())
for _ in range(T):
	n = int(input())
	if win[n] == True:
		print('First')
	else:
		print('Second')


n = [int(input()) for _ in range(int(input()))]
arr = [None] * (max(n) + 1)
arr[:5] = [False, False, True, True, True]
for i in range(5, len(arr)):
	arr[i] = not (arr[i - 2] and arr[i - 3] and arr[i - 5])
for num in n:
	if arr[num]:
		print('First')
	else:
		print('Second')


import sys
num_stones_wins = [False, False]
for num_stones in range(2, 101):
	opp_stones = [num_stones - i for i in (2, 3, 5) if num_stones >= i]
	is_win = any((not num_stones_wins[i] for i in opp_stones))
	num_stones_wins.append(is_win)
num_cases = None
for line in sys.stdin:
	i = int(line.strip())
	if num_cases is None:
		num_cases = i
	else:
		player_1_wins = num_stones_wins[i]
		print('First' if player_1_wins else 'Second')


arr = [True for i in range(101)]
arr[1] = False
arr[2] = True
arr[3] = True
arr[4] = True
arr[5] = True
for i in range(6, 101):
	arr[i] = arr[i - 2] == False or arr[i - 3] == False or arr[i - 5] == False
n = int(input())
for _ in range(n):
	i = input()
	if arr[int(i)] == True:
		print('First')
	else:
		print('Second')


import sys
t = int(input().strip())
tests = []
for i in range(t):
	tests.append(int(input().strip()))
biggest = max(tests)
results = [2, 1, 1, 1, 1, 1, 2]
for i in range(7, biggest):
	if results[i - 2] == 2:
		results.append(1)
	elif results[i - 3] == 2:
		results.append(1)
	elif results[i - 5] == 2:
		results.append(1)
	else:
		results.append(2)
for i in tests:
	if results[i - 1] == 1:
		print('First')
	else:
		print('Second')


T = int(input())
for i in range(0, T):
	n = int(input())
	r = n % 7
	if r < 2:
		print('Second')
	else:
		print('First')


t = int(input().strip())
tests = [0] * t
max_n = 0
for i in range(t):
	tests[i] = int(input().strip())
	max_n = max(max_n, tests[i])
result = [False] * max(max_n + 1, 6)
result[2] = True
result[3] = True
result[4] = True
result[5] = True
for i in range(6, max_n + 1):
	result[i] = not (result[i - 5] and result[i - 3] and result[i - 2])
for test in tests:
	print('First' if result[test] else 'Second')


def read_int():
	return int(input().strip())

def read_ints():
	inp = input().strip().split()
	return [int(x) for x in inp]
T = read_int()
for t in range(T):
	n = read_int()
	r = n % 7
	if r >= 2:
		print('First')
	else:
		print('Second')


stones = []
T = int(input().strip())
for _ in range(T):
	stones.append(int(input().strip()))
for n in stones:
	if n % 7 in [1, 0]:
		print('Second')
	else:
		print('First')


def main():
	N = int(input())
	for i in range(N):
		stones = int(input())
		print('First' if first_player_wins(stones) else 'Second')
memo = {}

def first_player_wins(stones):
	if stones == 1:
		return False
	elif stones <= 6:
		return True
	if stones not in memo:
		memo[stones] = not (first_player_wins(stones - 5) and first_player_wins(stones - 3) and first_player_wins(stones - 2))
	return memo[stones]
main()


a = [False] * 2 + [True] * 3
for i in range(5, 101):
	a.append(not (a[-2] and a[-3] and a[-5]))
for _ in range(int(input())):
	print('First' if a[int(input())] else 'Second')


win = {0: False, 1: False, 2: True, 3: True, 4: True, 5: True, 6: True, 7: False}

def will_win(stones_left):
	if stones_left < 0:
		return False
	if stones_left in win.keys():
		return win[stones_left]
	minus5 = will_win(stones_left - 5)
	minus3 = will_win(stones_left - 3)
	minus2 = will_win(stones_left - 2)
	ret = not minus5 or not minus3 or (not minus2)
	win[stones_left] = ret
	return ret
t = int(input())
for i in range(t):
	stones = int(input())
	print('First' if will_win(stones) else 'Second')


for i in range(int(input())):
	print('First' if int(input()) % 7 > 1 else 'Second')


win = {0: False, 1: False, 2: True, 3: True, 4: True, 5: True, 6: True}
for i in range(7, 120):
	if win[i - 2] == False or win[i - 3] == False or win[i - 5] == False:
		win[i] = True
	else:
		win[i] = False
for _ in range(int(input())):
	if win[int(input())]:
		print('First')
	else:
		print('Second')


import math
for _ in range(0, int(input())):
	num = int(input())
	if num < 2:
		print('Second')
	elif num % 7 > 1:
		print('First')
	else:
		print('Second')


def winner(k):
	for i in range(len(wins), k + 1):
		wins.append(max(not wins[i - 2], not wins[i - 3], not wins[i - 5]))
	return wins[k]
wins = [False, False, True, True, True, True]
T = int(input().strip())
for t in range(T):
	n = int(input().strip())
	if winner(n):
		print('First')
	else:
		print('Second')


for i in range(int(input())):
	print('First' if int(input()) % 7 > 1 else 'Second')


first = [False, False, True, True, True, True]
for n in range(6, 101):
	first.append(not (first[n - 2] and first[n - 3] and first[n - 5]))
t = int(input())
for test in range(t):
	n = int(input())
	print('First' if first[n] else 'Second')


for _ in range(int(input())):
	n = int(input())
	if n % 7 == 0 or n % 7 == 1:
		print('Second')
	else:
		print('First')


lose = [0, 1]
winerino = []
for i in range(2, 101):
	win = False
	for j in [2, 3, 5]:
		if i - j in lose:
			win = True
			break
	if win:
		winerino.append(i)
	else:
		lose.append(i)
for i in range(int(input())):
	if int(input()) in winerino:
		print('First')
	else:
		print('Second')


import sys
numlines = sys.stdin.readline()
for x in range(int(numlines)):
	stones = int(sys.stdin.readline())
	if stones % 7 == 0 or stones % 7 == 1:
		print('Second')
	else:
		print('First')


for i in range(int(input())):
	print('First' if int(input()) % 7 > 1 else 'Second')


for _ in range(int(input().strip())):
	num_stones = int(input())
	if num_stones % 7 == 0 or num_stones % 7 == 1:
		print('Second')
	else:
		print('First')


for i in range(int(input())):
	print('First' if int(input()) % 7 > 1 else 'Second')


for _ in range(int(input())):
	print('First' if int(input()) % 7 > 1 else 'Second')


t = int(input())
for _ in range(t):
	n = int(input())
	if n % 7 > 1:
		print('First')
	else:
		print('Second')


for case in range(int(input())):
	print('Second' if int(input()) % 7 < 2 else 'First')


testcases = int(input())
for i in range(0, testcases):
	if (int(input()) - 2) % 7 < 5:
		print('First')
	else:
		print('Second')


for i in range(int(input())):
	print(['First', 'Second'][int(input()) % 7 in [0, 1]])


import sys
play_arr = [False, False, True, True, True]
ignored_first = False
for line in sys.stdin:
	if not ignored_first:
		ignored_first = True
		continue
	n = int(line)
	if n >= len(play_arr):
		for i in range(len(play_arr), n + 1):
			play_arr.append(not (play_arr[i - 3] and play_arr[i - 2] and play_arr[i - 5]))
	if play_arr[n]:
		print('First')
	else:
		print('Second')


import functools
possibilities = {2, 3, 5}

@functools.lru_cache()
def game_of_stones(n):
	if n == 1:
		return False
	if n in range(2, 7):
		return True
	for p in possibilities:
		if n - p > 1 and (not game_of_stones(n - p)):
			return True
	return False
T = int(input().strip())
ns = [int(input().strip()) for _ in range(T)]
for n in ns:
	print('First') if game_of_stones(n) else print('Second')


num_tests = int(input().strip())
for i in range(num_tests):
	num_stones = int(input().strip())
	if num_stones % 7 < 2:
		print('Second')
	else:
		print('First')


def memoize(f):
	cache = {}

	def wrapper(*args):
		if args not in cache:
			cache[args] = f(*args)
		return cache[args]
	return wrapper

class Game(object):

	def __init__(self, size, moves):
		self.N = size
		self.moves = moves

	def is_valid(self, state):
		raise Exception('Not implemented')

	def make_move(self, state, move):
		raise Exception('Not implemented')

	def get_successors(self, state):
		successors = []
		for move in moves:
			next_state = self.make_move(state, move)
			if next_state is not None:
				successors.append(next_state)
		return successors

	@memoize
	def is_winning_state(self, state):
		next_states = self.get_successors(state)
		if not next_states:
			return False
		for next_state in next_states:
			if not self.is_winning_state(next_state):
				return True
		return False

class ChessBoardGame(Game):

	def __init__(self, size, moves=[(-2, 1), (-2, -1), (1, -2), (-1, -2)]):
		super(ChessBoardGame, self).__init__(size, moves)

	def is_valid(self, state):
		(row, col) = state
		return 1 <= row <= self.N and 1 <= col <= self.N

	def make_move(self, state, move):
		(row, col) = state
		next_state = (row + move[0], col + move[1])
		return next_state if self.is_valid(next_state) else None

class StonesGame(Game):

	def __init__(self, size, moves):
		super(StonesGame, self).__init__(size, moves)

	def is_valid(self, state):
		return state >= 0

	def make_move(self, state, move):
		next_state = state + move
		return next_state if self.is_valid(next_state) else None
moves = [-2, -3, -5]
for _ in range(int(input())):
	start = int(input())
	g = StonesGame(start, moves)
	print('First' if g.is_winning_state(start) else 'Second')


stone = int(input())
for i in range(0, stone):
	print('First' if int(input()) % 7 > 1 else 'Second')


for i in range(int(input())):
	if int(input()) % 7 > 1:
		print('First')
	else:
		print('Second')


T = int(input())
for _ in range(T):
	N = int(input())
	if N % 7 > 1:
		print('First')
	else:
		print('Second')


for i in range(int(input())):
	print('First' if int(input()) % 7 > 1 else 'Second')


test_cases = int(input())
for i in range(test_cases):
	if int(input()) % 7 < 2:
		print('Second')
	else:
		print('First')


for i in range(int(input())):
	print(['First', 'Second'][int(input()) % (2 + 5) in [0, 1]])


for i in range(int(input())):
	print('First' if int(input()) % 7 > 1 else 'Second')


t = int(input().strip())
for _ in range(t):
	stones = int(input().strip())
	print(['First', 'Second'][stones % 7 in [0, 1]])


result = [-1 for i in range(101)]
for i in range(101):
	for d in [2, 3, 5]:
		x = i - d
		if x >= 0 and result[x] == 0:
			result[i] = 1
	if result[i] == -1:
		result[i] = 0
n = int(input())
for i in range(n):
	k = int(input())
	if result[k] == 0:
		print('Second')
	else:
		print('First')


def dp(player, remain):
	if remain in dic:
		if dic[remain] == 1:
			if player == 2:
				return 2
			else:
				return 1
		if dic[remain] == 2:
			if player == 2:
				return 1
			else:
				return 2
	if remain < 2:
		if player == 1:
			return 2
		else:
			return 1
	if player == 1:
		try1 = dp(2, remain - 2)
		try2 = dp(2, remain - 3)
		try3 = dp(2, remain - 5)
		if try1 == 1 or try2 == 1 or try3 == 1:
			return 1
		else:
			return 2
	else:
		try1 = dp(1, remain - 2)
		try2 = dp(1, remain - 3)
		try3 = dp(1, remain - 5)
		if try1 == 1 or try2 == 1 or try3 == 1:
			return 1
		else:
			return 2
dic = {}
t = int(input())
for _ in range(t):
	n = int(input())
	if n in dic:
		if dic[n] == 1:
			print('First')
		else:
			print('Second')
		continue
	for i in range(1, n + 1):
		if i in dic:
			continue
		x = dp(1, i)
		dic[i] = x
	if dic[n] == 1:
		print('First')
	else:
		print('Second')


testCases = int(input())
for i in range(0, testCases):
	case = int(input())
	print('First') if case % 7 > 1 else print('Second')


T = int(input().strip())
for t in range(T):
	n = int(input().strip())
	print('Second' if n % 7 <= 1 else 'First')


for i in range(int(input())):
	print('First' if int(input()) % 7 > 1 else 'Second')


t = int(input())
for i in range(t):
	s = int(input())
	if s % 7 in [0, 1]:
		print('Second')
	else:
		print('First')


def solve(n, who, hash):
	if n < 2:
		return -1 * who
	if hash[n][who + 2] != -2:
		return hash[n][who + 2]
	ans = 0
	ans = solve(n - 2, -1 * who, hash)
	if ans == who:
		return who
	ans = solve(n - 3, -1 * who, hash)
	if ans == who:
		return who
	ans = solve(n - 5, -1 * who, hash)
	if ans == who:
		return who
	hash[n][who + 2] = -1 * who
	return -1 * who
hash = [-2] * 102
for i in range(102):
	hash[i] = [-2] * 5
t = int(input())
for z in range(t):
	n = int(input())
	sd = solve(n, 1, hash)
	if sd == 1:
		print('First')
	else:
		print('Second')


t = int(input())
for i in range(0, t):
	n = int(input())
	print(['First', 'Second'][n % 7 in [0, 1]])


for _ in range(int(input())):
	n = int(input()) % 7
	if n == 1 or n == 0:
		print('Second')
	else:
		print('First')


sols = [None] * 101
sols[0] = 2
sols[1] = 2
sols[2] = 1
sols[3] = 1
sols[4] = 1
sols[5] = 1
for i in range(6, 101):
	if sols[i - 2] == 2 or sols[i - 3] == 2 or sols[i - 5] == 2:
		sols[i] = 1
	else:
		sols[i] = 2
for _ in range(int(input())):
	n = int(input())
	if sols[n] == 1:
		print('First')
	else:
		print('Second')


moves = (2, 3, 5)
win = [False, False, True, True, True, True]
[win.append(not all((win[i - x] for x in moves))) for i in range(6, 101)]
[print('First' if win[int(input())] else 'Second') for _ in range(int(input()))]


t = int(input())
for i in range(t):
	n = int(input())
	if n % 7 > 1:
		print('First')
	else:
		print('Second')


t = int(input())
for i in range(t):
	n = int(input())
	if n % 7 > 1:
		print('First')
	else:
		print('Second')


for _ in range(int(input())):
	n = int(input())
	print('Second' if not n % 7 or not (n - 1) % 7 else 'First')


T = int(input())
for test in range(T):
	N = int(input())
	if N % 7 == 0 or N % 7 == 1:
		print('Second')
	else:
		print('First')


for i in range(int(input())):
	print('First' if int(input()) % 7 > 1 else 'Second')


m = 128
w = [0] * m
w[0] = w[2] = w[3] = w[4] = w[5] = 1
for i in range(6, m):
	r = 1
	r &= w[i - 2]
	r &= r and w[i - 3]
	r &= r and w[i - 5]
	w[i] = r ^ 1
for _ in range(int(input())):
	n = int(input())
	if w[n]:
		print('First')
	else:
		print('Second')


def computeResult(num):
	gameMap = {}
	gameMap[1] = 2
	gameMap[2] = 1
	gameMap[3] = 1
	gameMap[4] = 1
	gameMap[5] = 1
	gameMap[6] = 1
	if num > 5:
		for i in range(6, num + 1):
			if gameMap[i - 2] == 1 and gameMap[i - 3] == 1 and (gameMap[i - 5] == 1):
				gameMap[i] = 2
			else:
				gameMap[i] = 1
	if gameMap[num] == 1:
		return 'First'
	else:
		return 'Second'
nTestCases = int(input())
for i in range(nTestCases):
	num = int(input())
	result = computeResult(num)
	print(result)


from fileinput import input
cache = {}

def can_win(num):
	if num not in cache:
		if num < 2:
			result = False
		elif 2 <= num <= 6:
			result = True
		else:
			result = not min(can_win(num - 2), can_win(num - 3), can_win(num - 5))
		cache[num] = result
	return cache[num]
data = input()
cases = range(int(next(data)))
for case in cases:
	n = int(next(data))
	if can_win(n):
		print('First')
	else:
		print('Second')


cases = int(input())
win_states = [False, True, True, True, True]
checked = set([1, 2, 3, 4, 5])
for i in range(95):
	win_states.append(0)
stones = []

def check_state(num):
	if not num in checked:
		win_states[num - 1] = not (check_state(num - 2) and check_state(num - 3) and check_state(num - 5))
		checked.add(num)
	return win_states[num - 1]
for i in range(cases):
	if check_state(int(input())):
		print('First')
	else:
		print('Second')


tests = int(input())

def canWin(n):
	if n % 7 == 0 or n % 7 == 1:
		return False
	return True
for t in range(tests):
	n = int(input())
	if canWin(n):
		print('First')
	else:
		print('Second')


t = int(input())
for i in range(t):
	n = int(input())
	if n % 7 == 0 or n % 7 == 1:
		print('Second')
	else:
		print('First')


for i in range(int(input())):
	print('First' if int(input()) % 7 > 1 else 'Second')