#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
long double eps = 1.0 / 1e18;
long long sqr(long long a) { return a * a; };
long long gcd(long long a, long long b) { return !a ? b : gcd(b % a, a); }
long long binpow(long long a, long long b, long long mod) {
  return b ? (b % 2 ? (a * (sqr(binpow(a, b / 2, mod)) % mod)) % mod
                    : sqr(binpow(a, b / 2, mod)) % mod)
           : 1;
}
long long a[100001], ans[100001];
int main() {
  cout.tie(0), cin.tie(0), ios_base::sync_with_stdio(0);
  long long q, n, i;
  cin >> q;
  while (q--) {
    cin >> n;
    bool bl = 0;
    set<long long> st;
    for (i = 1; i <= n; i++) cin >> a[i], ans[i] = 0, st.insert(i);
    for (i = 1; i <= n; i++) {
      if (i == 1)
        ans[1] = a[1], st.erase(a[1]);
      else {
        if (a[i] > a[i - 1]) {
          if (st.find(a[i]) == st.end())
            bl = 1;
          else
            ans[i] = a[i], st.erase(a[i]);
        }
      }
    }
    for (i = 1; !bl && i <= n && !st.empty(); i++) {
      if (ans[i]) continue;
      auto f = *(st.begin());
      if (f < a[i])
        ans[i] = f, st.erase(f);
      else {
        bl = 1;
        break;
      }
    }
    for (i = 1; !bl && i <= n; i++)
      if (!ans[i]) bl = 1;
    if (!bl) {
      for (i = 1; i <= n; i++) cout << ans[i] << ' ';
    } else
      cout << -1;
    cout << '\n';
  }
  return 0;
}
