#include <bits/stdc++.h>
using namespace std;
unsigned long long int power(unsigned long long int n,
                             unsigned long long int p) {
  unsigned long long int m = 1;
  while (p > 0) {
    m *= n;
    p--;
  }
  return m;
}
void sieveOfEratosthenes(int n, bool prime[]) {
  unsigned long long int i, p;
  for (i = 2; i <= n / 2; i++) {
    if (prime[i]) {
      for (p = i * i; p <= n; p += i) {
        prime[p] = false;
      }
    }
  }
}
void add_edge(int u, int v, vector<int> adj_list[]) {
  adj_list[u - 1].push_back(v - 1);
  adj_list[v - 1].push_back(u - 1);
}
int lcs(int brr[], int arr[], int size, int n) {
  int dp[size + 1][n + 1];
  for (int i = 0; i <= size; ++i) {
    for (int j = 0; j <= n; ++j) {
      if (i == 0 || j == 0)
        dp[i][j] = 0;
      else if (brr[i - 1] == arr[j - 1])
        dp[i][j] = dp[i - 1][j - 1] + 1;
      else
        dp[i][j] = max(dp[i][j - 1], dp[i - 1][j]);
    }
  }
  return dp[size][n];
}
void kmagic(int n, int k, int arr[]) {
  int size = (int)1e4, count = 0;
  int brr[size + 1];
  unordered_set<int> st;
  vector<int> v;
  for (int i = 0; i < size; ++i) brr[i] = -1;
  for (int i = 0; i < n; ++i) {
    if (st.find(arr[i]) == st.end()) {
      v.push_back(arr[i]);
      st.insert(arr[i]);
    }
  }
  count = k - v.size();
  while (count > 0) {
    v.push_back(v[0]);
    count--;
  }
  if (st.size() <= k) {
    for (int i = 0; i < v.size(); ++i) {
      for (int j = i; j < size; j += k) brr[j] = v[i];
    }
    cout << size << endl;
    for (int i = 0; i < size; ++i) cout << brr[i] << " ";
  } else
    cout << "-1";
}
int main(int argc, char const *argv[]) {
  int t, x, k, y, u, v, n, m, money, val, b, days, check = 0, points;
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  string str;
  t = 1;
  cin >> t;
  while (t--) {
    int r, b, ox, oy, k;
    string s, t;
    cin >> n >> k;
    unordered_set<int> st;
    int heights[n];
    for (int i = 0; i < n; ++i) cin >> heights[i];
    kmagic(n, k, heights);
    cout << endl;
  }
  return 0;
}
