编程题
### 问题描述
晓宇给了你一个长度为 $n$ 的正整数序列 $A$ 。求有多少对 $(l,r)(l \le r)$ 使得序列 $A_l, A_{l+1}, ...A_r$ 的异或和为 $0$ 。
如果仅仅是这样那这道题目就太简单了。所以在检查 $(l,r)$ 是否满足条件时,允许你对 $A$ 中下标从 $l$ 到 $r$ 的每个数字进行任意次修改,每次修改为交换数字的相邻两个二进制位。
求有多少对 $(l,r)(l \le r)$ 使得序列 $A_l, A_{l+1}, ...A_r$ 中的每一个数字经过任意次修改后异或和为 $0$ 。
### 输入格式
第一行包含一个整数 $n$ 。
接下来的一行每行包含 $n$ 个整数,表示数组 $A$ 。
### 输出格式
输出一个整数,表示满足条件的数对个数。
### 样例输入
```
3
1 2 3
```
### 样例输出
```
2
```
### 评测数据范围
对于 $30$% 的数据,保证 $n \le 10$ 。
对于 $60$% 的数据,保证 $n \le 1000$ 。
对于另外 $20$% 的数据,保证 $0 \le A_i \lt 2^5$。
对于 $100$% 的数据,保证 $1 \le n \le 100000, 0 \le A_i \lt 2^{30}$ 。