#include #include #include #include #include #include using namespace std; typedef long long LL; typedef vector VI; #define REP(i,n) for(int i=0, i##_len=(n); i inline void amin(T &a, const T &b) { if (b inline void amax(T &a, const T &b) { if (a struct Fenwick : vector { typedef vector S; int N; Fenwick(int N_=0): S(N_), N(N_) {} void add(int i, T x) { for (; i>=1) { if (i+j <= N && s + S::operator[](i+j-1) < x) { s += S::operator[](i+j-1); j += i; } } return j; } }; int T, N; int A[50011], ans[50011]; int main() { scanf("%d", &T); REP ($, T) { scanf("%d", &N); REP (i, N) scanf("%d", A+i); Fenwick F(N); REP (i, N) F.add(i, 1); for (int i=N-1; i>=0; i--) { int d = A[i] - (i?A[i-1]:0); int guess = i - d; ans[i] = F.lower_bound(guess + 1); F.add(ans[i], -1); } REP (i, N) printf("%d%c", ans[i] + 1, i==N-1?'\n':' '); } return 0; }