AGAGA XOOORRR (Codeforces 1516B)
Tags: Greedy, bitmasks

Baby Ehab is known for his love for a certain operation. He has an array $$$a$$$ of length $$$n$$$, and he decided to keep doing the following operation on it:   he picks $$$2$$$ adjacent elements; he then removes them and places a single integer in their place: their bitwise XOR. Note that the length of the array decreases by one. Now he asks you if he can make all elements of the array equal. Since babies like to make your life harder, he requires that you leave at least $$$2$$$ elements remaining.

Input: The first line contains an integer $$$t$$$ ($$$1 \le t \le 15$$$) — the number of test cases you need to solve.The first line of each test case contains an integers $$$n$$$ ($$$2 \le n \le 2000$$$) — the number of elements in the array $$$a$$$.The second line contains $$$n$$$ space-separated integers $$$a_1$$$, $$$a_2$$$, $$$\ldots$$$, $$$a_{n}$$$ ($$$0 \le a_i < 2^{30}$$$) — the elements of the array $$$a$$$.

Output: If Baby Ehab can make all elements equal while leaving at least $$$2$$$ elements standing, print "YES". Otherwise, print "NO".

Note: In the first sample, he can remove the first $$$2$$$ elements, $$$0$$$ and $$$2$$$, and replace them by $$$0 \oplus 2=2$$$. The array will be $$$[2,2]$$$, so all the elements are equal.In the second sample, there's no way to make all the elements equal.

Sample Inputs:
2
3
0 2 2
4
2 3 1 10

Sample Outputs:
YES
NO

Solution (Python):
def solve():
    n = int(input())
    v = [int(e) for e in input().split()]
    (x, y, c) = (0, 0, 0)
    for i in range(0, n):
        x ^= v[i]
    for i in range(n - 1, -1, -1):
        y ^= v[i]
        if y == x:
            c += 1
            y = 0
    if not x or c > 1:
        return 'YES'
    return 'NO'

def init():
    T = 1
    T = int(input())
    while T:
        print(solve())
        T -= 1
init()

Solution (Python):
for s in [*open(0)][2::2]:
    a = [0]
    for x in s.split():
        a += (a[-1] ^ int(x),)
    print('NYOE S'[0 in a[a.index(a[-1]):]::2])

Solution (Python):
for _ in range(int(input())):
    n = int(input())
    a = list(map(int, input().split()))
    ans = 0
    save = 0
    for x in a:
        save ^= x
    save2 = 0
    for x in a:
        if x ^ save2 == save:
            save2 = 0
            ans += 1
        else:
            save2 ^= x
    if ans > 1 or save == 0:
        print('YES')
    else:
        print('NO')