#include #include #include #include using namespace std; typedef long long ll; const int INF = 0x3f3f3f3f; const int MAXN = 1e5 + 10; int a[MAXN], g[MAXN], dp[MAXN]; int main() { // freopen("in.txt", "r", stdin); int T; cin >> T; while (T--) { int n; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", &a[i]); for (int i = 1; i <= n; i++) g[i] = INF; for (int i = 0; i < n; i++) { int k = lower_bound(g + 1, g + 1 + n, a[i]) - g; dp[i] = k; g[k] = a[i]; } for (int i = 0; i < n; i++) printf("%d%c", dp[i], i < n - 1 ? ' ' : '\n'); } return 0; }