#include <bits/stdc++.h>
using
namespace
std;
int
countMaxOrSubsets(vector<
int
>& nums)
{
long
long
n = nums.size();
long
long
maxXorVal = 0;
for
(
int
i = 0; i < (1 << n); i++) {
long
long
xorVal = 0;
for
(
int
j = 0; j < n; j++) {
if
(i & (1 << j)) {
xorVal = (xorVal ^ nums[j]);
}
}
maxXorVal = max(maxXorVal, xorVal);
}
long
long
count = 0;
for
(
int
i = 0; i < (1 << n); i++) {
long
long
val = 0;
for
(
int
j = 0; j < n; j++) {
if
(i & (1 << j)) {
val = (val ^ nums[j]);
}
}
if
(val == maxXorVal) {
count++;
}
}
return
count;
}
int
main()
{
int
N = 4;
vector<
int
> arr = { 3, 2, 1, 5 };
cout << countMaxOrSubsets(arr);
return
0;
}