#include <vector> #include <map> #include <set> #include <queue> #include <deque> #include <list> #include <iostream> #include <cstdio> #include <cmath> #include <cassert> #include <ctime> #include <cctype> #include <cstring> #include <bitset> #include <algorithm> #include <iomanip> #define ld long double #define ll long long #define ull unsigned long long #define pb push_back #define mp make_pair #define fst first #define snd second #define y0 _y0 #define y1 _y1 using namespace std; template < typename T > T abs(T x) { return x > 0 ? x : -x; } template < typename T > T sqr(T x) { return x * x; } map <int, ll> dp[40]; int a[40]; int main() { int n; cin >> n; for (int i = 0; i < n; i++) cin >> a[i]; dp[0][0] = 1; for (int i = 0; i < n; i++) { for (map <int, ll> :: iterator it = dp[i].begin(); it != dp[i].end(); it++) { int sum = 0; int xorvalue = (*it).fst; ll cnt = (*it).snd; for (int j = i; j < n; j++) { sum += a[j]; dp[j + 1][xorvalue ^ sum] += cnt; } } } cout << dp[n][0] << "\n"; return 0; }