(Zero XOR Subset)-less
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给出一个长度为n的序列,试将其划分为尽可能多的非空子段,满足每一个元素出现且仅出现在其中一个子段中,且在这些子段中任取若干子段,它们包含的所有数的异或和不能为0

输入描述:

第一行一个整数表示序列长度
接下来一行n个整数描述这个序列

输出描述:

一行,如果不存在方案输出 -1 ,否则输出所有合法的划分方案中最大的划分数。
示例1

输入

复制
4
5 5 7 2

输出

复制
2

说明

只有两种划分方案:
\{[5,5,7,2]\}
\{[5,5,7],[2]\}
示例2

输入

复制
3
1 2 3

输出

复制
-1
示例3

输入

复制
3
3 1 10

输出

复制
3

备注:

原题链接:https://codeforces.com/problemset/problem/1101/G