#include #include #include #include using namespace std; int n , t , cnt , mn[100000 + 2] , a[100000 + 2] , ans[100000 + 2]; void solve() { for( register int i = 1 ; i <= n + 1 ; i++ ) mn[i] = 1 << 30; mn[0] = -1000000001; int mx = 0; for( register int i = 1 ; i <= n ; i++ ) { int t = lower_bound( mn , mn + mx + 1 , a[i] ) - mn; if( mn[ t - 1 ] <= a[i] ) { mn[t] = min( mn[t] , a[i] ); mx = max( t , mx ); ans[i] = t; } } } int main() { cin >> t; while( t-- ) { cin >> n; for( register int i = 1 ; i <= n ; i++ ) scanf( "%d" , &a[i] ); solve(); for( register int i = 1 ; i <= n ; i++ ) { printf( "%d" , ans[i] ); if( i == n ) putchar( '\n' ); else putchar( ' ' ); } } return 0; }