#include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long LL; const int N=100005; const LL mod=1e9+7; const double eps=1e-8; const double pi=acos(-1); int n,a[N],b[N],f[N],len[N],k; int Binary(int i) { int L=1,R=k,mid; while(L>1; if(len[mid]>=a[i]) R=mid; else L=mid+1; } return L; } int main() { // freopen("test1.in","r",stdin); // freopen("test2.out","w",stdout); int T; scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); f[1]=1; len[1]=a[1]; k=1; for(int i=2;i<=n;i++) { if(a[i]>len[k]) { len[++k]=a[i]; f[i]=k; } else { int pos=Binary(i); len[pos]=a[i]; f[i]=pos; } } // // b[1]=1; // k=1; // len[1]=1; // len[0]=0; // for(int i=2;i<=n;i++) // { // if(f[i]==k+1) // { // b[i]=len[k]+1; // len[++k]=b[i]; // } // else // { // b[i]=min(len[f[i]-1]+1,len[f[i]]); // len[f[i]]=min(b[i],len[f[i]]); // } // } for(int i=1;i<=n;i++) b[i]=f[i]; for(int i=1;ilen[k]) // {puts("A"); // len[++k]=b[i]; // f[i]=k; // } // else // {puts("B"); // int pos=Binary(i); // len[pos]=b[i]; // f[i]=pos; // } // } // for(int i=1;i