#include <bits/stdc++.h>
using namespace std;
using namespace chrono;
template <class T>
void Swap(T &a, T &b) {
  a ^= b;
  b ^= a;
  a ^= b;
}
template <class type>
void show(type name) {
  for (auto &nm : name) cerr << nm << ' ';
  cerr << '\n';
}
using lng = long long;
using ivec = vector<int>;
int main() {
  int t, n;
  cin >> t;
  while (t--) {
    cin >> n;
    set<int> nums;
    ivec seq(n);
    bool chk = true;
    for (int i = 1; i <= n; ++i) nums.insert(i);
    for (int i = 0; i < n; ++i) {
      cin >> seq[i];
      nums.erase(seq[i]);
    }
    int prv = 0;
    for (int i = 0; i < n; ++i) {
      int tmp = *(nums.begin());
      if (seq[i] == prv) {
        if (tmp > seq[i])
          chk = false;
        else {
          prv = seq[i];
          seq[i] = tmp;
          nums.erase(tmp);
          continue;
        }
      }
      prv = seq[i];
    }
    if (chk == false)
      cout << -1;
    else {
      for (int num : seq) cout << num << ' ';
    }
    cout << '\n';
  }
}
