#include #include #define MAXN 100005 int arr[MAXN],ans[MAXN],len, l[MAXN]; int binary_search(int i){ int left,right,mid; left=0,right=len; while(left=arr[i]) right=mid; else left=mid+1; } return left; } int main() { int T,p,i,j,k; scanf("%d",&T); while(T--){ scanf("%d",&p); for(i=1; i<=p; ++i) scanf("%d",&arr[i]); ans[1] = arr[1]; l[1] = 1; len=1; for(i=2; i<=p; ++i){ if(arr[i]>ans[len]){ ans[++len]=arr[i]; l[i] = len; } else{ int pos=binary_search(i); ans[pos] = arr[i]; l[i] = pos; } } for (int i = 1; i <= p; ++i){ printf("%d", l[i]); if (i != p) printf(" "); } printf("\n"); } return 0; }