子段异或
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

输入一个数列a,你需要输出其中异或值为0的不同子段的数量。一个子段 [l,r] ()的异或值为,其中符号代表异或运算
两个子段被视为相同的,当且仅当其开始和结束位置均对应相同。

输入描述:

第一行一个整数 n ,代表数列长度。
第二行 n 个整数,代表数列。

输出描述:

输出一个整数,代表答案。
示例1

输入

复制
5
1 2 3 2 1

输出

复制
2

说明

子段 [1,3] 和子段 [3,5] 是合法子段。

备注: