← Home
```go
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	var t int
	if _, err := fmt.Fscan(reader, &t); err != nil {
		return
	}

	for tc := 0; tc < t; tc++ {
		var n int
		fmt.Fscan(reader, &n)
		a := make([]int, n)
		for i := 0; i < n; i++ {
			fmt.Fscan(reader, &a[i])
		}

		dp := make([]int, n)
		for i := 0; i < n; i++ {
			dp[i] = 1
		}

		ans := 1
		for i := 1; i < n; i++ {
			for j := 0; j < i; j++ {
				if a[j] < a[i] {
					if dp[j]+1 > dp[i] {
						dp[i] = dp[j] + 1
					}
				}
			}
			if dp[i] > ans {
				ans = dp[i]
			}
		}

		dpRev := make([]int, n)
		for i := 0; i < n; i++ {
			dpRev[i] = 1
		}
		for i := n - 2; i >= 0; i-- {
			for j := n - 1; j > i; j-- {
				if a[j] < a[i] {
					if dpRev[j]+1 > dpRev[i] {
						dpRev[i] = dpRev[j] + 1
					}
				}
			}
			if dpRev[i] > ans {
				ans = dpRev[i]
			}
		}

		for i := 0; i < n; i++ {
			for j := i + 1; j < n; j++ {
				if a[i] < a[j] {
					cost := dp[i] + dpRev[j]
					if cost > ans {
						ans = cost
					}
				}
			}
		}

		fmt.Fprintln(writer, ans)
	}
}
```