import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int T = sc.nextInt(); for(int i = 0; i < T; i++) { int N = sc.nextInt(); int[] a = new int[N]; for(int j = 0; j < N; j++) { a[j] = sc.nextInt(); } // dp[i][j]は右端がaj,aiとなるような狭義単調増加列の最長の長さ int[][] dp = new int[N][N]; for(int j = 0; j < N; j++) { dp[j][j] = 1; } for(int j = 1; j < N; j++) { for(int k = 0; k < j; k++) { int len = 0; if(a[j] > a[k]) { len = 2; for(int l = 0; l < k; l++) { if(a[k] > a[l] && a[k] - a[l] < a[j] - a[k]) len = Math.max(len, dp[k][l] + 1); } } dp[j][k] = len; } } // dp2[i][j]は左端がai,ajとなるような狭義単調減少列の最長の長さ int[][] dp2 = new int[N][N]; for(int j = 0; j < N; j++) { dp2[j][j] = 1; } for(int j = N - 1; j >= 0; j--) { for(int k = j + 1; k < N; k++) { int len = 0; if(a[j] > a[k]) { len = 2; for(int l = k + 1; l < N; l++) { if(a[k] > a[l] && a[k] - a[l] < a[j] - a[k]) len = Math.max(len, dp2[k][l] + 1); } } dp2[j][k] = len; } } int[] left = new int[N]; for(int j = 0; j < N; j++) { int m = 0; for(int k = 0; k <= j; k++) { m = Math.max(m, dp[j][k]); } left[j] = m; } int[] right = new int[N]; for(int j = 0; j < N; j++) { int m = 0; for(int k = j; k < N; k++) { m = Math.max(m, dp2[j][k]); } right[j] = m; } int ans = 0; for(int j = 0; j < N; j++) { ans = Math.max(ans, left[j] + right[j] - 1); } System.out.println(ans); } } }