#include #include #include #include #include #include #include #include using namespace std; typedef long long LL; int T,a[100005],b[100005],f[100005]; int num,n,dq; int c[100005]; int lowbit(int x) { return x&(-x); } void change(int x,int y) { for (int i=x;i<=n;i+=lowbit(i)) c[i]=max(c[i],y); } int find(int x) { int ans=0; for (int i=x;i>0;i-=lowbit(i)) ans=max(ans,c[i]); return ans; } int main() { scanf("%d",&T); while (T--) { scanf("%d",&n); for (int i=1;i<=n;++i) scanf("%d",&a[i]); for (int i=1;i<=n;++i) b[i]=a[i]; sort(b+1,b+n+1); num=unique(b+1,b+n+1)-(b+1); for (int i=1;i<=n;++i) a[i]=lower_bound(b+1,b+num+1,a[i])-b; for (int i=1;i<=n;++i) c[i]=0; for (int i=1;i<=n;++i) { dq=find(a[i]-1); f[i]=dq+1; change(a[i],f[i]); } for (int i=1;i