输入一个数列 aaa,你需要输出其中异或值为 000 的不同子段的数量。一个子段 [l,r] (1≤l≤r≤n)[l,r] \ (1≤l≤r≤n)[l,r] (1≤l≤r≤n) 的异或值为 a[l]⊕a[l+1]⊕a[l+2]⊕…⊕a[r]a[l] \oplus a[l+1] \oplus a[l+2] \oplus \ldots\oplus a[r]a[l]⊕a[l+1]⊕a[l+2]⊕…⊕a[r],其中 ⊕\oplus⊕ 符号代表异或运算。
两个子段被视为相同当且仅当其开始和结束位置均对应相同。
输入
第一行一个整数 n (1≤n≤200000)n \ (1 \leq n≤200000)n (1≤n≤200000),代表数列长度。
第二行 n (0≤ai≤230−1)n \ (0≤a_i≤2^{30}−1)n (0≤ai≤230−1) 个整数,代表数列 aaa。
输出
输出一个整数,代表答案。
样例
5 1 2 3 2 1
2
来源
2020 牛客寒假算法基础集训营