#include <bits/stdc++.h>
const long long Inf = 1e18;
long long LINF = (long long)2e18;
using namespace std;
long long mod = 1e9 + 7;
long long mod3 = 998244353;
long long mod2 = 1e9 + 123;
vector<int> nxt;
int n;
bool fl = 1;
void build(vector<int> &ans, int p1, int p2, int le, int ri) {
  if (p2 > n) return;
  if (p1 > p2) return;
  if (nxt[p1] == -1) {
    ans[p1] = le;
    build(ans, p1 + 1, p2, le + 1, ri);
    return;
  }
  int dist = nxt[p1] - p1;
  if (dist > ri) {
    fl = 0;
    return;
  }
  int pp1 = p1, pp2 = p1 + dist;
  ans[pp1] = dist + le - 1;
  build(ans, pp1 + 1, pp2 - 1, le, le + dist - 2);
  build(ans, pp2, p2, dist + le, ri);
  return;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cout.setf(ios::fixed);
  cout.precision(20);
  int t;
  cin >> t;
  while (t--) {
    nxt.clear();
    nxt.push_back(-1);
    fl = 1;
    cin >> n;
    for (long long(i) = 0; (i) < n; (i)++) {
      int x;
      cin >> x;
      nxt.push_back(x);
    }
    vector<int> kek(2 * n + 1);
    build(kek, 1, n, 1, n);
    set<int> check;
    for (long long(i) = 1; (i) < n + 1; (i)++) {
      if (check.count(kek[i])) {
        fl = 0;
        break;
      }
      check.insert(kek[i]);
    }
    if (fl == 0) {
      cout << "-1\n";
      continue;
    }
    for (long long(i) = 1; (i) < n + 1; (i)++) {
      cout << kek[i] << " ";
    }
    cout << '\n';
  }
  return 0;
}
