#include #include #include #include #include #include #include #include #include #include using namespace std; using ld = long double; using ll = long long; using ull = unsigned long long; template using pq = priority_queue; template using pqg = priority_queue, greater>; const long long MOD = 998244353; int main(void) { int n; cin >> n; vector a(n); for (int i = 0; i < n; ++i) cin >> a[i]; vector> dp(n + 1, vector((1 << 14) + 1, 0)); dp[0][0] = 1; for (int i = 0; i < n; ++i) { for (int j = 0; j <= (1 << 14); ++j) { if (!dp[i][j]) continue; dp[i + 1][j] = 1; dp[i + 1][j ^ a[i]] = 1; } } int ans = 0; for (int i = 0; i <= (1 << 14); ++i) { if (!dp[n][i]) continue; ++ans; } cout << ans << endl; return 0; }