#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count());
template <typename T>
bool uax(T& a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <typename T>
bool uin(T& a, const T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
template <typename T1, typename T2>
istream& operator>>(istream& in, pair<T1, T2>& p) {
  in >> p.first >> p.second;
  return in;
}
template <typename T1, typename T2>
ostream& operator<<(ostream& out, pair<T1, T2>& p) {
  out << p.first << ' ' << p.second;
  return out;
}
long double GENERAL_TIMER;
long double GET_TIME() {
  return (clock() - GENERAL_TIMER) * 1.00 / CLOCKS_PER_SEC;
}
void PROGRAM_START() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout << fixed << setprecision(15);
}
void PROGRAM_END() {}
const int N = 107;
int a[N];
void SOLVE() {
  int n, k;
  cin >> n >> k;
  set<int> y;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    y.insert(a[i]);
  }
  if (y.size() > k) {
    cout << -1 << '\n';
    return;
  }
  vector<int> ans;
  for (auto e : y) {
    ans.push_back(e);
  }
  while (ans.size() < k) ans.push_back(*y.begin());
  int cur = 0;
  int ind = 0;
  int b = 0;
  while (cur < n) {
    while (ans[ind] != a[cur]) {
      ind = (ind + 1) % ans.size();
      b++;
    }
    ind = (ind + 1) % ans.size();
    b++;
    cur++;
  }
  cout << b << '\n';
  for (int i = 0; i < b; i++) {
    cout << ans[i % ans.size()] << ' ';
  }
  cout << '\n';
}
int main() {
  bool MULTITEST = true;
  PROGRAM_START();
  int t = 1;
  if (MULTITEST) cin >> t;
  for (int i = 1; i <= t; i++) {
    SOLVE();
  }
  PROGRAM_END();
}
