#include #include #include #include #include #include #include #include #include #include #include #include #define rep(i,j,k) for (int i = j; i <= k; i++) #define per(i,j,k) for (int i = j; i >= k; i--) using namespace std; typedef long long LL; const int low(int x) { return x&-x; } const int N = 4e5 + 10; const int mod = 1e9 + 7; const int INF = 0x7FFFFFFF; int T, n, a[N], b[N], f[N], g[N]; int get(int x) { int res = 0; for (int i = x; i; i -= low(i)) res = max(f[i], res); return res; } void insert(int x, int y) { for (int i = x; i <= n; i += low(i)) f[i] = max(f[i], y); } int main() { scanf("%d", &T); while (T--) { scanf("%d", &n); rep(i, 1, n) scanf("%d", &a[i]), b[i] = a[i], f[i] = 0; sort(b + 1, b + n + 1); rep(i, 1, n) { int x = lower_bound(b + 1, b + n + 1, a[i]) - b; g[i] = get(x - 1) + 1, insert(x, g[i]); } rep(i, 1, n) printf("%d%s", g[i], i == n ? "\n" : " "); } return 0; }