inlineintinsert(int x) { for (int i = Maxlen; ~i; --i) { if (!(x & (1 << i))) continue; if (!A[i]) { for (int j = 0; j < i; ++j) if (x & (1 << j)) x ^= A[j]; for (int j = i + 1; j <= Maxlen; ++j) if (A[j] & (1 << i)) A[j] ^= x; A[i] = x; return1; } x ^= A[i]; } return0; } }
inlinevoidSolve() { for (int i = 1; i <= N; ++i) Sum[i] = Sum[i - 1] ^ A[i]; if (!Sum[N]) { puts("-1"); return ; } Basis :: insert(Sum[N]); int ans = 1; for (int i = 1; i < N; ++i) ans += Basis :: insert (Sum[i]); cout<<ans<<endl; }
inlinevoidInput() { N = read<int>(); for (int i = 1; i <= N; ++i) A[i] = read<int>(); }