#include #include #include #include using namespace std; #define MAXN 50010 int t, n, a[MAXN], c[MAXN], ans[MAXN]; int Lowbit(int x) { return x & (-x); } void Add(int x) { while (x <= n) { c[x]++; x += Lowbit(x); } } int Get_sum(int x) { int sum = 0; while (x > 0) { sum += c[x]; x -= Lowbit(x); } return sum; } int Find(int x) { int l = 0, r = n, mid; while (l < r) { mid = (l + r) >> 1; if (mid-Get_sum(mid) >= x) r = mid; else l = mid+1; } return l; } int main() { scanf("%d", &t); while (t--) { memset(c, 0, sizeof(c)); memset(ans, 0, sizeof(ans)); scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", &a[i]); for (int i = n-1, k; i > 0; i--) { k = Find(a[i] - a[i-1] + 1); ans[i] = k; Add(k); } ans[0] = Find(1); for (int i = 0; i < n-1; i++) printf("%d ", n-ans[i]+1); printf("%d\n", n-ans[n-1]+1); } return 0; }