#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int INF = INT_MAX;
const int MAX = 4e6 + 5;
const int N = 1e5 + 5;
long long dx[] = {-1, 0, 1, 0, -1, -1, 1, 1};
long long dy[] = {0, 1, 0, -1, -1, 1, 1, -1};
char dir[] = {'U', 'R', 'D', 'L'};
long long power(long long a, long long b);
long long powmod(long long a, long long b, long long mod);
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long t;
  cin >> t;
  while (t--) {
    long long n, k;
    cin >> n >> k;
    long long a[n];
    set<long long> s;
    for (long long i = 0; i < n; i++) {
      cin >> a[i];
      s.insert(a[i]);
    }
    if (s.size() > k)
      cout << -1 << "\n";
    else if (n == k) {
      cout << k << "\n";
      for (long long i = 0; i < n; i++) cout << a[i] << " ";
      cout << "\n";
    } else {
      vector<long long> tmp, res;
      for (auto x : s) tmp.push_back(x);
      long long m = tmp.size();
      if (m < k) {
        for (long long i = 0; i < k - m; i++) {
          tmp.push_back(tmp[m - 1]);
        }
      }
      m = tmp.size();
      long long i = 0, j = 0;
      while (i < n && j % m < m) {
        if (a[i] == tmp[j % m]) {
          res.push_back(a[i]);
          i += 1;
          j += 1;
        } else {
          res.push_back(tmp[j % m]);
          j += 1;
        }
      }
      cout << res.size() << "\n";
      for (auto x : res) cout << x << " ";
      cout << "\n";
    }
  }
}
long long power(long long a, long long b) {
  long long res = 1;
  while (b > 0) {
    if (b % 2) res *= a;
    b /= 2, a *= a;
  }
  return res;
}
long long powmod(long long a, long long b, long long mod) {
  long long res = 1;
  while (b > 0) {
    if (b % 2) res *= (a % mod);
    b /= 2, a *= (a % mod);
  }
  return res % mod;
}
