#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define full(c) c.begin(), c.end() #define vector2d(name,type,h,w,init) vector> name(h,vector(w,init)) const int PRIME = 1000000007; const int INT_INF = 2147483647; const long long int LL_INF = 9223372036854775807; const double PI = acos(-1); const double EPS = 0.0001; typedef unsigned long long int ull; typedef long long int ll; using namespace std; int main() { //cin.tie(0); //ios::sync_with_stdio(false); const int INF = 2e9; const int TOP = 32768; int n; cin >> n; vector can(TOP + 1, false); can[0] = true; for (int k = 0; k < n; k++) { int a; cin >> a; for (int i = 0; i <= TOP; i++) { if (can[i]) { int nx = (i ^ a); if (nx > TOP) continue; can[nx] = true; } } } int cnt = 0; for (int i = 0; i <= TOP; i++) { if (can[i]) cnt++; } cout << cnt << endl; return 0; }