#yukicoder389C ''' ■考察欄 またカード食べてるよ・・・。 Aiは赤のカード、Bjは青のカード。これら(N+M)枚のカードを全部食べたい。 UNOの要領で食べてゆく。 食べるたびに色が異なっていた回数が多いほどcool。 全部食べろ。 とりあえず同じ数字がなければ、全部食べることは不可能。 一方、同じ数字が1個以上あれば全部食べられる。 1 _ 2 3 _ _ 6 : 6から降順に食べて 1 1 _ _ 4 5 _ : 1をまたいだら昇順に食べる。かっこよさは1。 どうでもいいカードがなければ、かっこよさは2にできるのに。 1 _ _ _ : 縮小版 1 1 4 5 : 5,4,1,上1,1 と食べればかっこよさは2。 ちょっと難しい。紙で実験しよう。 Corner Case多すぎるだろ。これがyukicoder? 1ケース落ちるんだが。どうせコーナーケースだろ。 ''' f=lambda:list(map(int,input().split())) nyu=int(input()) for _ in range(nyu): N,M=f() if N==0: input(); B=f(); print('Yes') for i in B: print('Blue '+str(i)) continue elif M==0: A=f(); input(); print('Yes') for i in A: print('Red '+str(i)) continue A=f(); B=f(); P=set(A); matched=set() for i in B: if i in P: matched.add(i) if len(matched)==0: print('No'); continue elif len(matched)==1: print('Yes') if N==1: for i in B: if i not in matched: print('Blue '+str(i)) for i in matched: print('Blue '+str(i)); print('Red '+str(i)) continue else: for i in A: if i not in matched: print('Red '+str(i)) for i in matched: print('Red '+str(i)); print('Blue '+str(i)) for i in B: if i not in matched: print('Blue '+str(i)) continue else: print('Yes') start=matched.pop(); print('Blue '+str(start)); print('Red '+str(start)) for i in A: if i==start: continue if i not in matched: print('Red '+str(i)) next=matched.pop(); print('Red '+str(next)); print('Blue '+str(next)) for i in B: if i==start or i==next: continue if i not in matched: print('Blue '+str(i)) next_is_BL = True while len(matched): now=matched.pop() if next_is_BL==True: print('Blue '+str(now)); print('Red '+str(now)); next_is_BL=False else: print('Red '+str(now)); print('Blue '+str(now)); next_is_BL=True print()