#include #include using namespace std; const int N = (int)1e5 + 10; int n; int a[N], dp[N], b[N]; int main() { //freopen( "A.in", "r", stdin ); int T; scanf( "%d", &T ); while ( T -- ) { scanf( "%d", &n ); for ( int i = 1; i <= n; i ++ ) { scanf( "%d", &a[i] ); } b[0] = -1; b[1] = a[1]; int len = 1; dp[1] = 1; for ( int i = 2; i <= n; i ++ ) { int l = 0, r = len, mid; while ( l <= r ) { mid = ( l + r ) >> 1; if ( b[mid] < a[i] ) { l = mid + 1; dp[i] = mid + 1; } else { r = mid - 1; } } b[dp[i]] = a[i]; len = max( len, dp[i] ); } for ( int i = 1; i <= n; i ++ ) { printf( "%d%c", dp[i], ( i == n ) ? 10 : ' ' ); } } return 0; }