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: N = int(input())
  A = [int(a) for a in input().split()]
  P = 10**9 + 7
  X = [1] * (1 << 20)  # 0
  Y = [0] * (1 << 20)  # 1
  Z = [0] * (1 << 20)  # Cnt of Zeros at Last update
  Z[0] = 1
  X[0] = (P + 1) // 2
  
  s = 0
  for i in range(N):
      s ^= A[i]
      if s == 0:
          X[0] = (X[0] * 2) % P
          Z[0] += 1
      else:
          X[s] = (X[s] + Y[s] * (Z[0] - Z[s])) % P
          Y[s] = (X[s] + Y[s]) % P
          Z[s] = Z[0]
  
  print((X[s] + sum(Y) * (s == 0)) % P)
  
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"}]