#include <iostream>
#include <cstdio>
#include <vector>
#include <map>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <set>
#include <queue>
#include <stack>
#include <cstdlib>
#include <string>
#include <list>
#include <bitset>
#include <iomanip>
#include <cmath>
#include <sstream>
#include <deque>
#include <climits>
#include <cassert>
using namespace std;
#define ull unsigned long long
#define ll long long
#define Max(x,y) ((x)>(y)?(x):(y))
#define Min(x,y) ((x)<(y)?(x):(y))
#define Sl(x) scanf("%lld",&x)
#define Su(x) scanf("%llu",&x)
#define S(x) scanf("%d",&x)
#define IS(x) cin>>x
#define ISF(x) getline(cin,x)
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pps pair<ll,pll>
#define ppf pair<pll,ll>
#define psi pair<string,int>
#define pis pair<int,string>
#define fr first
#define se second
#define MOD 1000000007
#define MP(x,y) make_pair(x,y)
#define eps 1e-7
#define V(x) vector<x>
#define pb(x) push_back(x)
#define mem(x,i) memset(x,i,sizeof(x))
#define fori(i,s,n) for(i=(s);i<(n);i++)
#define ford(i,s,n) for(i=(n);i>=(s);--i)
#define INF 8944674407370955161LL
#define debug(i,st,arr) fori(i,0,st){cout<<arr[i]<<" ";}cout<<endl;
#define forci(i,sw) for((i)=(sw).begin();(i)!=(sw).end();(i)++)
#define forcd(i,sw) for((i)=(sw).rbegin();(i)!=(sw).rend();(i)++)
int abs(int x) {if(x < 0) return -x; return x;}
int a[100010], b[100010];
int main()
{
// ios_base::sync_with_stdio(false);
int t, n;
cin >> t;
set<int>::iterator it;
set<int>::reverse_iterator it1;
set<int> s;
for (int cs = 1; cs <= t; cs++) {
cout << "Test : " << cs << endl;
s.clear();
cin >> n;
bool f = true;
for (int i = 0; i < n; i++) {
//a[i] = rand()%(i+1);
//cout << a[i] << " ";
cin >> a[i];
if (a[i] > i) {
f = false;
}
}
//cout << endl;
if (!f) {
cout << -1 << endl;
continue;
}
int x = n;
for (int i = n - 1; i >= 0; i--) {
if (a[i] == 0) {
if (!s.empty()) {
it1 = s.rbegin();
b[i] = *it1;
it = s.find(*it1);
s.erase(it);
} else {
b[i] = x--;
}
} else if (s.size() == a[i]) {
b[i] = x--;
} else if (s.size() < a[i]) {
int y = a[i] - s.size();
for (int j = 0; j < y; j++) {
s.insert(x--);
}
b[i] = x--;
} else {
int y = s.size() - a[i];
it = s.lower_bound(*s.begin() - 1 + y);
b[i] = *it;
s.erase(it);
}
}
for (int i = 0; i < n; i++) {
cout << b[i] << " ";
}
cout << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8c3RhY2s+CiNpbmNsdWRlIDxjc3RkbGliPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8bGlzdD4KI2luY2x1ZGUgPGJpdHNldD4KI2luY2x1ZGUgPGlvbWFuaXA+CiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPHNzdHJlYW0+CiNpbmNsdWRlIDxkZXF1ZT4KI2luY2x1ZGUgPGNsaW1pdHM+CiNpbmNsdWRlIDxjYXNzZXJ0PgogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgTWF4KHgseSkgKCh4KT4oeSk/KHgpOih5KSkKI2RlZmluZSBNaW4oeCx5KSAoKHgpPCh5KT8oeCk6KHkpKQojZGVmaW5lIFNsKHgpIHNjYW5mKCIlbGxkIiwmeCkKI2RlZmluZSBTdSh4KSBzY2FuZigiJWxsdSIsJngpCiNkZWZpbmUgUyh4KSBzY2FuZigiJWQiLCZ4KQojZGVmaW5lIElTKHgpIGNpbj4+eAojZGVmaW5lIElTRih4KSBnZXRsaW5lKGNpbix4KQojZGVmaW5lIHBpaSBwYWlyPGludCxpbnQ+CiNkZWZpbmUgcGxsIHBhaXI8bGwsbGw+CiNkZWZpbmUgcHBzIHBhaXI8bGwscGxsPgojZGVmaW5lIHBwZiBwYWlyPHBsbCxsbD4KI2RlZmluZSBwc2kgcGFpcjxzdHJpbmcsaW50PgojZGVmaW5lIHBpcyBwYWlyPGludCxzdHJpbmc+CiNkZWZpbmUgZnIgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBNT0QgMTAwMDAwMDAwNwojZGVmaW5lIE1QKHgseSkgbWFrZV9wYWlyKHgseSkKI2RlZmluZSBlcHMgMWUtNwojZGVmaW5lIFYoeCkgdmVjdG9yPHg+CiNkZWZpbmUgcGIoeCkgcHVzaF9iYWNrKHgpCiNkZWZpbmUgbWVtKHgsaSkgbWVtc2V0KHgsaSxzaXplb2YoeCkpCiNkZWZpbmUgZm9yaShpLHMsbikgZm9yKGk9KHMpO2k8KG4pO2krKykKI2RlZmluZSBmb3JkKGkscyxuKSBmb3IoaT0obik7aT49KHMpOy0taSkKI2RlZmluZSBJTkYgODk0NDY3NDQwNzM3MDk1NTE2MUxMCiNkZWZpbmUgZGVidWcoaSxzdCxhcnIpIGZvcmkoaSwwLHN0KXtjb3V0PDxhcnJbaV08PCIgIjt9Y291dDw8ZW5kbDsKI2RlZmluZSBmb3JjaShpLHN3KSBmb3IoKGkpPShzdykuYmVnaW4oKTsoaSkhPShzdykuZW5kKCk7KGkpKyspCiNkZWZpbmUgZm9yY2QoaSxzdykgZm9yKChpKT0oc3cpLnJiZWdpbigpOyhpKSE9KHN3KS5yZW5kKCk7KGkpKyspCiAKaW50IGFicyhpbnQgeCkge2lmKHggPCAwKSByZXR1cm4gLXg7IHJldHVybiB4O30KIAppbnQgYVsxMDAwMTBdLCBiWzEwMDAxMF07CiAKaW50IG1haW4oKQp7Ci8vCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwoJaW50IHQsIG47CgljaW4gPj4gdDsKCXNldDxpbnQ+OjppdGVyYXRvciBpdDsKCXNldDxpbnQ+OjpyZXZlcnNlX2l0ZXJhdG9yIGl0MTsKCXNldDxpbnQ+IHM7Cglmb3IgKGludCBjcyA9IDE7IGNzIDw9IHQ7IGNzKyspIHsKCQljb3V0IDw8ICJUZXN0IDogIiA8PCBjcyA8PCBlbmRsOwoJCXMuY2xlYXIoKTsKCQljaW4gPj4gbjsKCQlib29sIGYgPSB0cnVlOwoJCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkJCS8vYVtpXSA9IHJhbmQoKSUoaSsxKTsKCQkJLy9jb3V0IDw8IGFbaV0gPDwgIiAiOwoJCQljaW4gPj4gYVtpXTsKCQkJaWYgKGFbaV0gPiBpKSB7CgkJCQlmID0gZmFsc2U7CgkJCX0KCQl9CgkJLy9jb3V0IDw8IGVuZGw7CgkJaWYgKCFmKSB7CgkJCWNvdXQgPDwgLTEgPDwgZW5kbDsKCQkJY29udGludWU7CgkJfQoJCWludCB4ID0gbjsKCQlmb3IgKGludCBpID0gbiAtIDE7IGkgPj0gMDsgaS0tKSB7CgkJCWlmIChhW2ldID09IDApIHsKCQkJCWlmICghcy5lbXB0eSgpKSB7CgkJCQkJaXQxID0gcy5yYmVnaW4oKTsKCQkJCQliW2ldID0gKml0MTsKCQkJCQlpdCA9IHMuZmluZCgqaXQxKTsKCQkJCQlzLmVyYXNlKGl0KTsKCQkJCX0gZWxzZSB7CgkJCQkJYltpXSA9IHgtLTsKCQkJCX0KCQkJfSBlbHNlIGlmIChzLnNpemUoKSA9PSBhW2ldKSB7CgkJCQliW2ldID0geC0tOwoJCQl9IGVsc2UgaWYgKHMuc2l6ZSgpIDwgYVtpXSkgewoJCQkJaW50IHkgPSBhW2ldIC0gcy5zaXplKCk7CgkJCQlmb3IgKGludCBqID0gMDsgaiA8IHk7IGorKykgewoJCQkJCXMuaW5zZXJ0KHgtLSk7CgkJCQl9CgkJCQliW2ldID0geC0tOwkJCQkKCQkJfSBlbHNlIHsKCQkJCWludCB5ID0gcy5zaXplKCkgLSBhW2ldOwoJCQkJaXQgPSBzLmxvd2VyX2JvdW5kKCpzLmJlZ2luKCkgLSAxICsgeSk7CgkJCQliW2ldID0gKml0OwoJCQkJcy5lcmFzZShpdCk7CgkJCX0KCQl9CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKCQkJY291dCA8PCBiW2ldIDw8ICIgIjsKCQl9CgkJY291dCA8PCBlbmRsOwoJfQoJcmV0dXJuIDA7Cn0=