#include #include using namespace std; #define LIM 1000011 int c[LIM]; int t[LIM]; int v[LIM]; int main() { int z; scanf("%d", &z); while (z--) { int n; scanf("%d", &n); int s = 0, m = 0; for (int i = 0; i < n; i++) { scanf("%d", c + i); s += c[i]; m = max(m, c[i]); } if (s == n && m != n) { if (m == 1) { for (int i = 0, j = n-1; i < n; j = i++) t[j] = i; } else { for (int i = 0; i < n; i++) t[i] = 0; for (int i = 0; i < n; i++) t[c[i]]++; for (int i = 0; i < n; i++) t[i+1] += t[i]; for (int i = 0; i < n; i++) v[--t[c[i]]] = i; c[t[v[n-1]] = v[n-2]]--; for (int i = n-2, j = n-1; i >= 0; i--) { while (!c[v[j]]) j--; c[t[v[i]] = v[j]]--; } } for (int i = 0; i < n; i++) printf(i == n-1 ? "%d\n" : "%d ", t[i]+1); } else { printf("-1\n"); } } }