//editor: Jan Tang //problem: #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define set0(a) memset(a,0,sizeof(a)); #define CIN(a,n) for(int i=1;i<=n;i++) cin>>a[i]; typedef long long ll; typedef unsigned long long ull; const int Mod = 1e9+7; const int maxn = 100005; const int inf = 0x3f3f3f3f; int m,n; /*==============================head==========================*/ int arr[maxn],ans[maxn],len; int f[maxn]; int main() { int T,i,j,k; scanf("%d",&T); while(T--){ set0(f);set0(ans); scanf("%d",&n); for(i=1; i<=n; ++i) scanf("%d",&arr[i]); ans[1] = arr[1]; len= 1; f[1] = 1; for( i = 2; i <= n; ++ i ){ if( arr[i] > ans[len] ){ ans[++len]=arr[i]; f[i] = len; } else{ int pos = lower_bound(ans,ans+len,arr[i])-ans; ans[pos] = arr[i]; f[i] = pos; } } // for( i = 1; i <= n; ++ i ) // if(f[i] == f[i-1]) f[i] = 1; for( i = 1; i <= n - 1; ++ i ) cout << f[i] <<" "; cout << f[n] <