#include #include #include using namespace std; const int VAL = 5005; const int RANGE = (1 << 15) + 5; int nVal, val[VAL]; void read() { cin >> nVal; for (int i = 0; i < nVal; ++i) cin >> val[i]; } void work() { bool visited[RANGE] = {}; queue Q; visited[0] = true; Q.push(0); while (!Q.empty()) { int cur = Q.front(); Q.pop(); for (int i = 0; i < nVal; ++i) { int nex = cur ^ val[i]; if (!visited[nex]) { visited[nex] = true; Q.push(nex); } } } cout << accumulate(visited, visited + RANGE, 0) << endl; } int main() { read(); work(); return 0; }