defsolve(): l, r = map(int, input().split()) pre = 0 for i inrange(30, -1, -1): if getBit(l, i) != getBit(r, i): x, y = (1 << i) - 1, 0 x += pre y += pre + (1 << i) z = l if x != l and y != l else r print(x, y, z) return pre += (1 << i) if getBit(l, i) else0 return
structBasis { using i64 = longlong; using T = i64; staticconstint n = 60; T p[n + 10] {}; T siz = 0; voidadd(T x) { for(int i = n; i >= 0; i--) if(x >> i & 1) { if(p[i] == 0) { p[i] = x; siz++; break; } x ^= p[i]; } return; }
T size() { return siz; } boolquery(T x) { for(int i = n; i >= 0; i--) if((x >> i & 1) && p[i] != 0) x ^= p[i]; return x == 0; } T mx() { T ans = 0; for(int i = n; i >= 0; i--) ans = std::max(ans, (ans ^ p[i])); return ans; } };
voidsolve() { int n; std::cin >> n; int pre = 0; Basis basis; for(int i = 1; i <= n; i++) { int x; std::cin >> x; pre ^= x; basis.add(pre); } if(pre == 0) std::cout << "-1\n"; else std::cout << basis.size() << endl;
}
intmain() { #ifdef ONLINE_JUDGE ioclear; #endif
int t = 1; // std::cin >> t; while(t--) solve(); }