#include #include #include #define lchild rt << 1, l, m #define rchild rt << 1 | 1, m + 1, r #define MAXN 50005 using namespace std; int n, a[MAXN], b[MAXN]; class Segment_Tree{ private: int node[MAXN << 2]; void push_up(int rt){ node[rt] = node[rt << 1] + node[rt << 1 | 1]; } public: void build(int rt = 1, int l = 1, int r = n){ node[rt] = r - l + 1; if (l == r) return; int m = (l + r) >> 1; build(lchild); build(rchild); } int update(int W, int rt = 1, int l = 1, int r = n){ if (l == r){ node[rt] = 0; return l; } int m = (l + r) >> 1, ret = 0; if (W < node[rt << 1 | 1]) ret = update(W, rchild); else ret = update(W - node[rt << 1 | 1], lchild); push_up(rt); return ret; } }seg; int main(){ int t; scanf("%d", &t); while (t--){ scanf("%d", &n); seg.build(); for (int i = 1; i <= n; i++){ scanf("%d", a + i); } for (int i = n; i; i--){ a[i] -= a[i - 1]; } for (int i = n; i > 0; i--){ b[i] = seg.update(a[i]); } printf("%d", b[1]); for (int i = 2; i <= n; i++) printf(" %d", b[i]); puts(""); } return 0; }