← Home
package main

import (
	"bufio"
	"fmt"
	"io"
	"os"
)

func main() {
	data, _ := io.ReadAll(os.Stdin)
	idx := 0
	nextInt := func() int {
		for idx < len(data) && (data[idx] < '0' || data[idx] > '9') {
			idx++
		}
		val := 0
		for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
			val = val*10 + int(data[idx]-'0')
			idx++
		}
		return val
	}

	n := nextInt()
	var basis [31]int
	rank := 0
	cur := 0

	for i := 0; i < n; i++ {
		cur ^= nextInt()
		x := cur
		for b := 30; b >= 0; b-- {
			if ((x >> b) & 1) == 0 {
				continue
			}
			if basis[b] == 0 {
				basis[b] = x
				rank++
				break
			}
			x ^= basis[b]
		}
	}

	out := bufio.NewWriterSize(os.Stdout, 1<<20)
	defer out.Flush()

	if cur == 0 {
		fmt.Fprint(out, -1)
	} else {
		fmt.Fprint(out, rank)
	}
}