#include <bits/stdc++.h>
using namespace std;
int main() {
  int t;
  cin >> t;
  while (t--) {
    int n;
    cin >> n;
    int q[n];
    set<int> unused;
    for (int i = 0; i < n; i++) {
      cin >> q[i];
      unused.insert(i + 1);
    }
    int p[n];
    fill(p, p + n, 0);
    int max = 0;
    bool valid = true;
    for (int i = 0; i < n; i++) {
      if (q[i] > max) {
        p[i] = q[i];
        unused.erase(unused.find(p[i]));
        max = p[i];
      } else {
        if (!p[i]) {
          if (*unused.begin() <= q[i]) {
            p[i] = *unused.begin();
            unused.erase(unused.begin());
          } else {
            cout << -1 << endl;
            valid = false;
            break;
          }
        }
      }
    }
    if (valid) {
      for (int i = 0; i < n; i++) {
        cout << p[i] << ' ';
      }
      cout << endl;
    }
  }
}
