#include <bits/stdc++.h>
using namespace std;
const int maxn = 5e5 + 100;
const long long inf = 1e18 + 7;
const long long mod = 1e9 + 7;
int nxt[maxn];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int t;
  cin >> t;
  for (int tc = 0; tc < t; tc++) {
    int n;
    cin >> n;
    for (int i = 0; i < n; i++) {
      cin >> nxt[i];
      if (nxt[i] == -1) {
        nxt[i] = i + 1;
      } else {
        nxt[i]--;
      }
    }
    stack<pair<int, int> > s;
    vector<int> ans(n, 0);
    int cur = 1;
    bool ok = true;
    for (int i = 0; i <= n; i++) {
      while (!s.empty() && i == s.top().second) {
        int idx = s.top().first;
        ans[idx] = cur++;
        s.pop();
      }
      if (i < n) {
        if (!s.empty() && nxt[i] > s.top().second) {
          ok = false;
          break;
        }
        s.push({i, nxt[i]});
      }
    }
    if (!ok) {
      cout << -1 << endl;
    } else {
      for (int i = 0; i < ans.size(); i++) {
        cout << ans[i] << " ";
      }
      cout << endl;
    }
  }
}
