编程题
### 问题描述
大衣有一个长度为 $N$ 的数组 $A$,满足 $2\times(A_1\oplus A_2\oplus\cdots \oplus A_N)\ge(A_1|A_2|\cdots|A_N)$ 的条件。
大衣将进行接下来的操作:
- 选取一个元素 $A_i$ 将它从数组中删除。
- 他可以拿一个空盒子装这个元素,也可以拿一个其中**所有元素异或和**的结果大于等于 $A_i$ 的非空盒子来装这个元素。
大衣想知道他**最少**用几个盒子便能将数组 $A$ 中的元素删完。
### 输入格式
第一行输入一个正整数 $N$ 表示数组的大小。
第二行输入 $N$ 个整数 $A_1,A_2,\cdots,A_N$ 表示数组中的元素。
### 输出格式
输出一个数字表示能将 $A$ 中元素删完所需的最少盒子数。
### 样例输入1
```text
1
6
```
### 样例输出1
```text
1
```
### 样例输入2
```text
4
1 2 3 12
```
### 样例输出2
```text
1
```
### 样例输入3
```text
3
6 5 4
```
### 样例输出3
```text
2
```
### 说明
- 样例 $1$:
- 从数组中选择数字 $6$ 并将其删除,再将其添加到一个新盒子。
- 数组 $A$ 已经空了并且我们用了一个盒子。
- 样例 $2$:
- 从数组中选择 $12$ 并将其删除,然后将其放入新的盒子中。盒子的异或和变为 $12$。
- 从数组中选择 $3$ 并将其删除。由于盒子的异或和 $12 \ge3$,我们可以将 $3$ 加入盒子中,使盒子的异或和变为 $12\oplus3=15$。
- 从数组中选择 $2$ 并将其删除。由于盒子的异或和 $15\ge2$,我们可以将 $2$ 加入盒子中,使盒子的异或和变为 $15 \oplus2 = 13$。
- 从数组中选择 $1$ 并将其删除。由于盒子的异或和 $13\ge1$,我们可以将 $1$ 加入盒子中,使盒子的异或和变为 $13 \oplus 1 = 12$。
- 现在 $A$ 数组为空,我们一共使用了一个盒子。
- 样例 $3$:
- 从数组中选择 $5$ 并删除它。将 $5$ 添加到一个新的盒子中。盒子的异或和为 $5$。
- 从数组中选择 $4$ 并删除它。由于盒子的异或和 $5 > 4$,我们可以将 $4$ 添加到盒子中。盒子的异或和变为 $5 \oplus 4 = 1$。
- 从数组中选择 $6$ 并删除它。将 $6$ 添加到一个新的盒子中。第二个盒子的异或和为 $6$。
- 此时 $A$ 数组为空,我们使用了两个盒子。
### 评测数据规模
对于所有的评测数据,$1\le N\le 2\times10^5$,$1\le A_i\le10^{18}$。