//第二长的上升子序列;
//给你们提供两组测试数据吧
//这个两个能过的话也差不多了
3
1 1 2
2
4
1 1 2 3
3
#include <iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
int dp[1005];
long long a[1005];
int dpshu[1005];
int main()
{
int case1;
scanf("%d",&case1);
while(case1--)
{
int i,j;
memset(dp,0,sizeof(dp));
memset(dpshu,0,sizeof(dpshu));
int n;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%lld",&a[i]);
int max1=0;
for(i=1;i<=n;i++)
{
dp[i]=1;
for(j=1;j<i;j++)
{
if(a[i]>a[j])
dp[i]=max(dp[i],dp[j]+1);
}
}
for(i=1;i<=n;i++)
{
max1=max1<dp[i]?dp[i]:max1;
}
for(i=1;i<=n;i++)
{
for(j=1;j<i;j++)
{
if(a[i]>a[j]&&dp[j]+1==dp[i])
{
dpshu[i]+=dpshu[j];
}
}
if(dpshu[i]==0)//这个地方要注意下
dpshu[i]=1;
}
int number=0;
for(i=1;i<=n;i++)
{
if(dp[i]==max1)
{
number++;
if(dpshu[i]>1)
number++;
}
}
if(number>1)
printf("%d\n",max1);
else
printf("%d\n",max1-1);
}
return 0;
}