#include using namespace std; using Vp = std::vector> ; bool isOK(Vp& ret) { int N, M; scanf(" %d %d", &N, &M); vector A(N), B(M); unordered_set sta, stb; for (auto& a : A) { scanf(" %d", &a); sta.insert(a); } for (auto& a : B) { scanf(" %d", &a); stb.insert(a); } // sort(A.begin(), A.end()); // sort(B.begin(), B.end()); vector aon, bon, ab; for (auto a : A) { if (stb.find(a) != stb.end()) { ab.push_back(a); } else { aon.push_back(a); } } for (auto a : B) { if (sta.find(a) == sta.end()) { bon.push_back(a); } } if (ab.empty() && N && M) { return false; } if (N + M == max(N, M)) { for (auto a : A) { ret.emplace_back(1, a); } for (auto a : B) { ret.emplace_back(0, a); } return true; } for (auto a : aon) { ret.emplace_back(1, a); } ret.emplace_back(1, ab[0]); ret.emplace_back(0, ab[0]); for (auto a : bon) { ret.emplace_back(0, a); } for (int i = 1; i < ab.size(); i ++) { int id = (i & 1) ^ 1; ret.emplace_back(id, ab[i]); ret.emplace_back(id ^ 1, ab[i]); } return true; } void solve() { Vp ret; if (isOK(ret)) { puts("Yes"); for (auto [a, b] : ret) { cout << (a ? "Red" : "Blue") << " " << b << endl; } } else { puts("No"); } } int main () { int n; cin >> n; while (n --) { solve(); } }