Decreasing Game
Contest: Codeforces Round 876 (Div. 2)
Difficulty rating: 2400
Tags: constructive algorithms, dfs and similar, dp, greedy, interactive

This is an interactive problem.

Consider the following game for two players:

- Initially, an array of integers $$$a_1, a_2, \ldots, a_n$$$ of length $$$n$$$ is written on blackboard.
- Game consists of rounds. On each round, the following happens:   The first player selects any $$$i$$$ such that $$$a_i \gt 0$$$. If there is no such $$$i$$$, the first player loses the game (the second player wins) and game ends.  The second player selects any $$$j \neq i$$$ such that $$$a_j \gt 0$$$. If there is no such $$$j$$$, the second player loses the game (the first player wins) and game ends.  Let $$$d = \min(a_i, a_j)$$$. The values of $$$a_i$$$ and $$$a_j$$$ are simultaneously decreased by $$$d$$$ and the next round starts.

It can be shown that game always ends after the finite number of rounds.

You have to select which player you will play for (first or second) and win the game.

Input format:
The first line contains a single integer $$$n$$$ ($$$1 \le n \le 300$$$) — the length of array $$$a$$$.

The second line contains $$$n$$$ integers $$$a_1, a_2, \ldots, a_n$$$ ($$$1 \le a_i \le 300$$$) — array $$$a$$$.

Interaction format:
Interaction begins after reading $$$n$$$ and array $$$a$$$.

You should start interaction by printing a single line, containing either "First" or "Second", representing the player you select.

On each round, the following happens:

- If you are playing as the first player, you should print a single integer $$$i$$$ ($$$1 \le i \le n$$$) on a separate line. After that, you should read a single integer $$$j$$$ ($$$-1 \le j \le n$$$) written on a separate line.If $$$j = -1$$$, then you made an incorrect move. In this case your program should terminate immediately.If $$$j = 0$$$, then the second player can't make a correct move and you win the game. In this case your program should also terminate immediately.Otherwise $$$j$$$ is equal to the index chosen by the second player, and you should proceed to the next round.
- If you are playing as the second player, you should read a single integer $$$i$$$ ($$$-1 \le i \le n$$$) written on a separate line.If $$$i = -1$$$, then you made an incorrect move on the previous round (this cannot happen on the first round). In that case your program should terminate immediately.If $$$i = 0$$$, then the first player can't make a correct move and you win the game. In this case your program should also terminate immediately.Otherwise $$$i$$$ is equal to the index chosen by first player. In this case you should write single integer $$$j$$$ ($$$1 \le j \le n$$$) on a separate line and proceed to the next round.

After printing $$$i$$$ or $$$j$$$, do not forget to output the end of line and flush the output. Otherwise, you will get Idleness limit exceeded. To do this, use:

- fflush(stdout) or cout.flush() in C++;
- System.out.flush() in Java;
- flush(output) in Pascal;
- stdout.flush() in Python;
- see the documentation for other languages.

Hacks

Hacks are disabled in this problem.

Constraints:
Time limit: 2.0 s
Memory limit: 256.0 MB

Note:
In the first example $$$n = 4$$$ and array $$$a$$$ is $$$[\, 10, 4, 6, 3 \,]$$$. The game goes as follows:

- After reading array $$$a$$$ contestant's program chooses to play as the first player and prints "First".
- First round: the first player chooses $$$i = 1$$$, the second player chooses $$$j = 3$$$. $$$d = \min(a_1, a_3) = \min(10, 6) = 6$$$ is calculated. Elements $$$a_1$$$ and $$$a_3$$$ are decreased by $$$6$$$. Array $$$a$$$ becomes equal to $$$[\, 4, 4, 0, 3 \,]$$$.
- Second round: the first player chooses $$$i = 2$$$, the second player chooses $$$j = 1$$$. $$$d = \min(a_2, a_1) = \min(4, 4) = 4$$$ is calculated. Elements $$$a_2$$$ and $$$a_1$$$ are decreased by $$$4$$$. Array $$$a$$$ becomes equal to $$$[\, 0, 0, 0, 3 \,]$$$.
- Third round: the first player chooses $$$i = 4$$$. There is no $$$j \neq 4$$$ such that $$$a_j > 0$$$, so the second player can't make a correct move and the first player wins. Jury's program prints $$$j = 0$$$. After reading it, contestant's program terminates.

In the second example $$$n = 6$$$ and array $$$a$$$ is $$$[\, 4, 5, 5, 11, 3, 2 \,]$$$. The game goes as follows:

- Contestant's program chooses to play as the second player and prints "Second".
- First round: $$$i = 2$$$, $$$j = 4$$$, $$$a = [\, 4, 0, 5, 6, 3, 2 \,]$$$.
- Second round: $$$i = 5$$$, $$$j = 4$$$, $$$a = [\, 4, 0, 5, 3, 0, 2 \,]$$$.
- Third round: $$$i = 4$$$, $$$j = 3$$$, $$$a = [\, 4, 0, 2, 0, 0, 2 \,]$$$.
- Fourth round: $$$i = 6$$$, $$$j = 1$$$, $$$a = [\, 2, 0, 2, 0, 0, 0 \,]$$$.
- Fifth round: $$$i = 1$$$, $$$j = 3$$$, $$$a = [\, 0, 0, 0, 0, 0, 0 \,]$$$.
- Sixth round: the first player can't make a correct move and the second player wins. Jury's program prints $$$i = 0$$$. After reading it, contestant's program terminates.

Note that the example interaction contains extra empty lines so that it's easier to read. The real interaction doesn't contain any empty lines and you shouldn't print any extra empty lines as well.

Example input:
4
10 4 6 3


3

1

0

Example output:
First
1

2

4

Example input:
6
4 5 5 11 3 2

2

5

4

6

1

0

Example output:
Second 

4

4

3

1

3

Editorial:
I claim that the second player wins if and only if array $$$a$$$ can be divided into two sets with equal sum, or, equivalently, there is a subset of $$$a$$$ with sum $$$\frac{a_1 + a_2 + \ldots + a_n}{2}$$$.
The strategy for the second player in this case is quite simple: before the game starts, the second player splits $$$a$$$ into two parts with equal sum. On each round, if the first player selected $$$i$$$ from the first part, the second player selects $$$j$$$ from the second part. Otherwise, he selects $$$j$$$ from the first part. Before and after every round, sums of elements in both parts are equal, so if there is a positive element in one part, there is also a positive element in the other part. So the second player is always able to make a correct move.
The strategy for the first player in the other case is even simplier: he can just make any correct move on each round. Why?
Let's suppose the second player won the game, which lasted $$$k$$$ rounds, and elements selected by players on each round were $$$(i_1, j_1), (i_2, j_2), \ldots, (i_k, j_k)$$$. After $$$k$$$-th round, all elements of $$$a$$$ are zeroes, otherwise the first player would still be able to make a correct move.
Let's consider graph $$$G$$$ with set of vertices $$$V = \{ 1, 2, \ldots, n \}$$$ and set of edges $$$E = \{ (i_1, j_1), (i_2, j_2), \ldots, (i_k, j_k) \}$$$. It's easy to see that this graph is always a tree (proof left as exercise for reader; hint: after each round, at least one of $$$a_i$$$ and $$$a_j$$$ becomes zero). If graph is a tree, then it is bipartite, which means that its vertices can be divided into two sets such that each edge connects vertices from different sets. As each operation decreases $$$a_i$$$ and $$$a_j$$$ by same value, these two sets have the same sum of elements. So we have a contradiction.