```go
package main
import (
"bufio"
"fmt"
"os"
)
type FastReader struct {
r *bufio.Reader
}
func (fr *FastReader) nextInt() int {
sign := 1
val := 0
c, err := fr.r.ReadByte()
for (c < '0' || c > '9') && c != '-' {
c, err = fr.r.ReadByte()
if err != nil {
return 0
}
}
if c == '-' {
sign = -1
c, _ = fr.r.ReadByte()
}
for c >= '0' && c <= '9' {
val = val*10 + int(c-'0')
c, err = fr.r.ReadByte()
if err != nil {
break
}
}
return sign * val
}
func main() {
reader := &FastReader{bufio.NewReaderSize(os.Stdin, 1<<20)}
out := bufio.NewWriterSize(os.Stdout, 1<<20)
defer out.Flush()
t := reader.nextInt()
for ; t > 0; t-- {
n := reader.nextInt()
a := make([]int, n)
G := 0
for i := 0; i < n; i++ {
v := reader.nextInt()
a[i] = v
G |= v
}
if G == 0 {
fmt.Fprintln(out, 1)
continue
}
prev := make([]int, 20)
maxgap := make([]int, 20)
for i := 1; i <= n; i++ {
x := a[i-1]
for b := 0; b < 20; b++ {
if (x>>b)&1 == 1 {
gap := i - prev[b] - 1
if gap > maxgap[b] {
maxgap[b] = gap
}
prev[b] = i
}
}
}
ans := 1
for b := 0; b < 20; b++ {
if (G>>b)&1 == 1 {
gap := n - prev[b]
if gap > maxgap[b] {
maxgap[b] = gap
}
kb := maxgap[b] + 1
if kb > ans {
ans = kb
}
}
}
fmt.Fprintln(out, ans)
}
}
```