package main
import (
"bufio"
"os"
)
type FastScanner struct {
r *bufio.Reader
}
func NewFastScanner() *FastScanner {
return &FastScanner{r: bufio.NewReader(os.Stdin)}
}
func (fs *FastScanner) NextInt() int {
sign := 1
val := 0
c, err := fs.r.ReadByte()
for (c < '0' || c > '9') && c != '-' {
c, err = fs.r.ReadByte()
if err != nil {
return 0
}
}
if c == '-' {
sign = -1
c, err = fs.r.ReadByte()
if err != nil {
return 0
}
}
for c >= '0' && c <= '9' {
val = val*10 + int(c-'0')
c, err = fs.r.ReadByte()
if err != nil {
break
}
}
return sign * val
}
func main() {
in := NewFastScanner()
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
t := in.NextInt()
for ; t > 0; t-- {
n := in.NextInt()
s := make([]int, n+1)
for i := 1; i <= n; i++ {
s[i] = in.NextInt()
}
dp := make([]int, n+1)
for i := 1; i <= n; i++ {
dp[i] = 1
}
ans := 1
for i := 1; i <= n; i++ {
for j := i * 2; j <= n; j += i {
if s[j] > s[i] && dp[j] < dp[i]+1 {
dp[j] = dp[i] + 1
if dp[j] > ans {
ans = dp[j]
}
}
}
if dp[i] > ans {
ans = dp[i]
}
}
out.WriteString(intToString(ans))
out.WriteByte('\n')
}
}
func intToString(x int) string {
if x == 0 {
return "0"
}
if x < 0 {
return "-" + intToString(-x)
}
buf := [20]byte{}
i := len(buf)
for x > 0 {
i--
buf[i] = byte('0' + x%10)
x /= 10
}
return string(buf[i:])
}