package main
import (
"bufio"
"fmt"
"os"
)
const MOD int64 = 998244353
type FastScanner struct {
r *bufio.Reader
}
func NewFastScanner() *FastScanner {
return &FastScanner{r: bufio.NewReaderSize(os.Stdin, 1<<20)}
}
func (fs *FastScanner) NextInt64() int64 {
var sign int64 = 1
var val int64 = 0
c, _ := fs.r.ReadByte()
for (c < '0' || c > '9') && c != '-' {
c, _ = fs.r.ReadByte()
}
if c == '-' {
sign = -1
c, _ = fs.r.ReadByte()
}
for c >= '0' && c <= '9' {
val = val*10 + int64(c-'0')
c2, err := fs.r.ReadByte()
if err != nil {
break
}
c = c2
}
return val * sign
}
func add(a, b int64) int64 {
a += b
if a >= MOD {
a -= MOD
}
return a
}
func sub(a, b int64) int64 {
a -= b
if a < 0 {
a += MOD
}
return a
}
func main() {
in := NewFastScanner()
out := bufio.NewWriterSize(os.Stdout, 1<<20)
defer out.Flush()
t := int(in.NextInt64())
for ; t > 0; t-- {
n := int(in.NextInt64())
S0, S1 := int64(1), int64(0)
A0 := make([]int64, 0, n+1)
A1 := make([]int64, 0, n+1)
idxMap := make(map[uint64]int, n+1)
// initial prefix xor 0
A0 = append(A0, 1)
A1 = append(A1, 0)
idxMap[0] = 0
var p uint64 = 0
var ans int64 = 0
for i := 1; i <= n; i++ {
x := uint64(in.NextInt64())
p ^= x
idx, ok := idxMap[p]
if !ok {
idx = len(A0)
idxMap[p] = idx
A0 = append(A0, 0)
A1 = append(A1, 0)
}
E0 := A0[idx]
E1 := A1[idx]
dp0 := add(sub(S1, E1), E0)
dp1 := add(sub(S0, E0), E1)
if i == n {
ans = dp1
}
S0 = add(S0, dp0)
S1 = add(S1, dp1)
A0[idx] = add(A0[idx], dp0)
A1[idx] = add(A1[idx], dp1)
}
fmt.Fprintln(out, ans)
}
}