#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; bool dp[5000][(1 << 15) + 1]; int main(void) { int n; cin >> n; vector a(n); for (int i = 0; i < n; ++i) cin >> a[i]; dp[0][0] = 1; for (int i = 0; i < n; ++i) { for (int j = 0; j < (1 << 15); ++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 << 15); ++i) { if (!dp[n][i]) continue; ++ans; } cout << ans << endl; return 0; }