#include<bits/stdc++.h>
#define ll long long
#define int long long
#define pii make_pair
#define pb push_back
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,b,a) for(int i=b;i>=a;--i)
const ll inf = 1145141919810;
using namespace std;
inline ll read() {
ll x=0,f=1;
char c=getchar();
while (c<'0' || c>'9') {
if (c=='-') f=-1;
c=getchar();
}
while (c>='0' && c<='9') {
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
inline void print(ll x) {
if(x < 0) putchar('-'), x = -x;
if(x > 9) print(x / 10);
putchar(x % 10 + '0');
return ;
}
inline void pprint(ll x) {
print(x);
puts("");
}
const int N = 4e5 + 7;
ll a[N], b[N];
bool cmp(ll x, ll y){
return x > y;
}
void slv() {
int n = read(), m = read();
rep(i, 1, n) a[i] = read();
rep(i, 1, m) b[i] = read();
sort(a + 1, a + 1 + n, cmp);
sort(b + 1, b + 1 + m, cmp);
if(n < m){
puts("-1");
return ;
}
vector<int> q, qq;
ll rst = n - m;
rep(i, 1, m){
if(a[i] > b[i]){
puts("-1");
return ;
}
if(b[i] - a[i] <= rst){
rep(j, a[i], b[i] - 1){
qq.pb(j);
}
rst -= b[i] - a[i];
}else{
puts("-1");
return ;
}
}
priority_queue<ll> _q;
for(int i = n; i > m && rst > 0; rst--, i--){
if(a[i] >= b[m]){
puts("-1");
return ;
}
_q.push(-a[i]);
}
if (res > 0) {
cout << -1 << '\n';
return;
}
while(_q.size()){
ll x = -_q.top();
if(x >= b[m]) {
puts("-1");
return ;
}
q.push_back(x);
_q.pop();
x++;
_q.push(-x);
_q.pop();
}
for (auto i: qq) q.push_back(i);
pprint(q.size());
for(auto x:q){
print(x); putchar(' ');
}
puts("");
}
signed main() {
int T = read();
while(T--) {
slv();
}
return 0;
}
/*
3
6 3
1 1 1 2 2 4
2 3 4
6 3
1 1 3 3 3 5
3 4 5
4 3
2 2 3 3
2 3 4
*/