#include #include #include using namespace std; const int N = 100000 + 5; const int INF = 0x3f3f3f3f; int a[N]; int b[N]; int dp[N]; int n; int main(){ int T; scanf("%d", &T); while(T --){ memset(dp, INF, sizeof(dp)); scanf("%d", &n); for(int i = 0; i < n; i ++){ scanf("%d" ,&a[i]); } for(int i = 0; i < n; i ++){ b[i] = lower_bound(dp, dp+n, a[i]) - dp + 1; *lower_bound(dp, dp+n, a[i]) = a[i]; } for(int i = 0; i < n; i ++){ if(i != 0) printf(" "); printf("%d", b[i]); }printf("\n"); } }