output_description: Print the answer.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      A_1 A_2 \ldots A_{N}
attempt: def cul(n):
      memo[1] = 1
      memo[2] = 1
      memo[3] = 2
      if memo[n] == -1:
          t = 1
          for i in range(1, N):
              t += cul(N - i)
          memo[n] = t
      return memo[n]
  
  
  import math
  import sys
  
  MOD = 10**9 + 7
  
  N = int(input())
  memo = [-1] * (N + 3)
  
  tmp = 0
  l = [-1]
  a = list(map(int, input().split()))
  b = []
  x = []
  for i in range(N):
      tmp = tmp ^ a[i]
      x.append(tmp)
      if tmp == 0:
          b.append([x[i] for i in range(len(x))])
          x = []
  if x != []:
      b.append([x[i] for i in range(len(x))])
  
  M = tmp
  if tmp != 0:
      tmp = 0
      s = 0
      for i in range(N):
          tmp = tmp ^ a[i]
          if tmp == M:
              s += 1
      print(cul(s))
      sys.exit()
  
problem_description: Statement
  
  The _beauty_ of a sequence a of length n is defined as a_1 \oplus \cdots
  \oplus a_n, where \oplus denotes the bitwise exclusive or (XOR).
  
  You are given a sequence A of length N. Snuke will insert zero or more
  partitions in A to divide it into some number of non-empty contiguous
  subsequences.
  
  There are 2^{N-1} possible ways to insert partitions. How many of them divide
  A into sequences whose beauties are all equal? Find this count modulo
  10^{9}+7.
samples: [{"input": "3\n    1 2 3", "output": "3\n    \n\nFour ways of dividing A shown below satisfy the condition. The condition is\nnot satisfied only if A is divided into (1),(2),(3).\n\n  * (1,2,3)\n  * (1),(2,3)\n  * (1,2),(3)\n\n* * *"}, {"input": "3\n    1 2 2", "output": "1\n    \n\n* * *"}, {"input": "32\n    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0", "output": "147483634\n    \n\nFind the count modulo 10^{9}+7.\n\n* * *"}, {"input": "24\n    1 2 5 3 3 6 1 1 8 8 0 3 3 4 6 6 4 0 7 2 5 4 6 2", "output": "292"}]