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)); } }