import java.util.Scanner;
import java.util.TreeMap;

public class SumNim {
	static int n;
	static int mid;
	static TreeMap<Long, Integer>[] blocks;
	static int[] countBlocks;
	static int[] arr;

	public static void generate(int i, long xor, long last, int lastSize) {
		if (i > mid) {
			long value = xor ^ last;
			if (!blocks[i].containsKey(value))
				blocks[i].put(value, 0);
			blocks[i].put(value, blocks[i].get(value) + 1);
			countBlocks[i]++;
		}
		if (i == n)
			return;
		if (i <= mid && lastSize != 0) {
			generate(i + 1, xor ^ last, arr[i], 1);
		}
		generate(i + 1, xor, last + arr[i], lastSize + 1);
	}

	public static long solve(int i, long xor, long last, int lastSize) {
		int need = n - (n - 1 - i);
		long value = xor ^ last;
		long answer = 0 + (blocks[need].containsKey(value) ? blocks[need]
				.get(value) : 0);
		if (i <= mid)
			return answer;
		if (lastSize != 0)
			answer += solve(i - 1, xor ^ last, arr[i], 1);
		answer += solve(i - 1, xor, last + arr[i], lastSize + 1);
		return answer;
	}

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		n = in.nextInt();
		mid = (n + 1) / 2;
		arr = new int[n];
		for (int i = 0; i < n; i++) {
			arr[i] = in.nextInt();
		}
		blocks = new TreeMap[n + 1];
		countBlocks = new int[n + 1];
		for (int i = 0; i <= n; i++)
			blocks[i] = new TreeMap<>();
		generate(0, 0, 0, 0);
		System.out.println(solve(n - 1, 0, 0, 0));
	}
}