Orig Description
Score : 600 points
Problem StatementThere are N piles of stones. The i-th pile has A_i stones.
Aoki and Takahashi are about to use them to play the following game:
Starting with Aoki, the two players alternately do the following operation:
Operation: Choose one pile of stones, and remove one or more stones from it.
When a player is unable to do the operation, he loses, and the other player wins.
When the two players play optimally, there are two possibilities in this game: the player who moves first always wins, or the player who moves second always wins, only depending on the initial number of stones in each pile.
In such a situation, Takahashi, the second player to act, is trying to guarantee his win by moving at least zero and at most (A_1 - 1) stones from the 1-st pile to the 2-nd pile before the game begins.
If this is possible, print the minimum number of stones to move to guarantee his victory; otherwise, print -1 instead.
Constraints
2 \leq N \leq 300
1 \leq A_i \leq 10^{12}
InputInput is given from Standard Input in the following format:
N
A_1 \ldots A_N
OutputPrint the minimum number of stones to move to guarantee Takahashi's win; otherwise, print -1 instead.
Sample Input 12
5 3
Sample Output 11
Without moving stones, if Aoki first removes 2 stones from the 1-st pile, Takahashi cannot win in any way.
If Takahashi moves 1 stone from the 1-st pile to the 2-nd before the game begins so that both piles have 4 stones, Takahashi can always win by properly choosing his actions.
Sample Input 22
3 5
Sample Output 2-1
It is not allowed to move stones from the 2-nd pile to the 1-st.
Sample Input 33
1 1 2
Sample Output 3-1
It is not allowed to move all stones from the 1-st pile.
Sample Input 48
10 9 8 7 6 5 4 3
Sample Output 43
Sample Input 53
4294967297 8589934593 12884901890
Sample Output 51
Watch out for overflows.
Extracted Specification
An integer N (2 ≤ N ≤ 300), representing some quantity or size.
A list of integers A of size N, where each integer is between 1 and 1e12.
### Example Input:
```
3
1 1 2
```
### Function Signature:
Write a function f(N, A) that takes in the input.
def f(N: int, A: List[int]):
'''
N: an integer
A: a list of integers
'''
Test Case Generator
Certainly! Here is a test case generator for the described problem statement:
```python
import random
def tcgen():
# Generate a random N within the given constraints
N = random.randint(2, 300)
# Generate a list A of size N with each element in the range [1, 10^12]
A = [random.randint(1, 10**12) for _ in range(N)]
return N, A
# Example usage
for _ in range(5):
N, A = tcgen()
print(N)
print(" ".join(map(str, A)))
```
### Explanation:
1. **N**: The number of piles is randomly chosen to be between 2 and 300.
2. **A**: Each element in the list of piles is randomly chosen from 1 to \(10^{12}\).
This script will generate a valid random test case each time it is called, adhering to the problem's constraints. You can run this generator multiple times to create different test cases for extensive testing.
Extract Arguments
def extract_arguments(fh):
N = int(fh.readline().strip())
A = list(map(int, fh.readline().strip().split()))
return N, A