#include <iostream>
using namespace std;
int main()
{
int n, m, max, i, j;
// freopen("in.txt", "r", stdin);
cin>>n;
while (n--)
{
int a[21]={0}, b[21]={0};
cin>>m;
for (i=1; i<=m; i++)
{
cin>>a[i];
if (i==1)
{b[1]=1;continue;}
max=1;
for (j=1; j<i; j++)
{
if(a[i]<a[j]&&b[j]>=max)
max=b[j]+1;
}
b[i]=max;
}
max=0;
for (i = 1; i<=m; i++)
{
if (max<b[i])
max=b[i];
}
cout<<max<<endl;
}
return 0;
}
导弹是按一定顺序过来的:用一个数组来记录前i个导弹的最优解,如果下一个导弹满足高度小于前面的导弹且它小于的那个导弹的最优值最大,那么它的最优解即为那个导弹的最优解加1,如果没有高度小于它的,那它就是第一个,最优解为1,依次往后,最后求数组里面的最大值!