package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
t := int(readInt(reader))
for tc := 0; tc < t; tc++ {
n := int(readInt(reader))
adj := make(map[int64][]int64)
for i := 1; i <= n; i++ {
a := readInt(reader)
if i > 1 {
u := a + int64(i-1)
v := u + int64(i-1)
adj[u] = append(adj[u], v)
}
}
visited := make(map[int64]bool)
queue := []int64{int64(n)}
visited[int64(n)] = true
maxLen := int64(n)
for len(queue) > 0 {
u := queue[0]
queue = queue[1:]
if u > maxLen {
maxLen = u
}
for _, v := range adj[u] {
if !visited[v] {
visited[v] = true
queue = append(queue, v)
}
}
}
fmt.Fprintln(writer, maxLen)
}
}
func readInt(reader *bufio.Reader) int64 {
var n int64
for {
c, err := reader.ReadByte()
if err != nil {
return n
}
if c >= '0' && c <= '9' {
n = int64(c - '0')
break
}
}
for {
c, err := reader.ReadByte()
if err != nil {
return n
}
if c < '0' || c > '9' {
break
}
n = n*10 + int64(c-'0')
}
return n
}