编程题
### 问题描述
小小蓝是一名天才程序员,他研究了一种特殊的数组操作,他称之为“异或消除”。
对一个整数数组 $arr$ 执行一次“异或消除”操作,可以拆解成以下四个步骤:
1. 找到数组中的最大值 $a$ 和次大值 $b$,若有多个相同的最大值或次大值,取最左边的那个。
2. 将 $a$ 和 $b$ 两个元素同时从数组中移除。
3. 计算 $a$ 和 $b$ 的异或值 $c = a \oplus b$。
4. 将 $c$ 放入数组的最左边。
小小蓝想知道,对于给定的数组 $arr$,经过不断的“异或消除”操作后,数组中最后留下的元素。他请你编写一个程序来帮助他解决这个问题。
### 输入格式
输入包含两行。
输入的第一行,包含一个整数 $n$ $(1 \leq n \leq 10^5)$,表示数组 $arr$ 的长度。
输入的第二行,包含 $n$ 个整数,表示数组 $arr$ 中的元素。
### 输出格式
输出仅一行,包含一个整数,表示数组中最后留下的元素。
### 样例输入
```text
5
3 5 7 5 3
```
### 样例输出
```text
7
```
### 说明
1. 第一次异或消除操作,取出 $7$ 和 $5$,异或得 $2$,数组变为 $[2, 3, 5, 3]$。
2. 第二次异或消除操作,取出 $5$ 和 $3$,异或得 $6$,数组变为 $[6, 2, 3]$。
3. 第三次异或消除操作,取出 $6$ 和 $3$,异或得 $5$,数组变为 $[5, 2]$。
4. 第四次异或消除操作,取出 $5$ 和 $2$,异或得 $7$,数组变为 $[7]$。
### 评测数据规模
对于 30% 的测试数据,$1 \leq n \leq 10$。
对于 60% 的测试数据,$1 \leq n \leq 1000$。
对于 100% 的测试数据,$1 \leq n \leq 10^5$,数组中的元素取值范围为 $[-10^9, 10^9]$。