#P1037. 【入门组双周赛 #1 B】异或与和(xoradd)

【入门组双周赛 #1 B】异或与和(xoradd)

题目描述

给你 nn 个正整数 a1ana_1\sim a_n,求一个非负整数 kkk1018k\le 10^{18}),使得 $(a_1+k)+(a_2+k)+\cdots+(a_n+k)=(a_1+k)\oplus(a_2+k)\oplus\cdots\oplus(a_n+k)$,或者报告这不存在。

如果无解,令 k=1k=-1

其中 \oplus 表示按位异或,即 C++ 中的 ^

输入格式

从文件 xoradd.in 中读入数据。

第一行一个正整数 nn,表示序列长度。

第二行 nn 个正整数,表示 a1ana_1\sim a_n

输出格式

输出到文件 xoradd.out 中。

输出一行一个非负整数,表示 kk,若无解则输出 1-1

输入输出样例

2
2 5
8

说明/提示

【数据范围与约定】

100%100\% 的数据,保证 1n1000,1ai1091\le n\le 1000,1\le a_i\le 10^9