← Home
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:])
}