def solve(turn): n = int(input()) X,Y=[],[] found = True for _ in range(n): x,y=input().split() X.append(x) Y.append(y) xa = False # xにaがある from_a_maxlenbb = 0 for i in range(n): if X[i]=="a": xa = True for c in Y[i]: if c == "a": print(f"turn={turn+1},x[i]=a and a in y[i]") print('Yes') return else: # x[i]がaの時、y[i]=bbbbb...bbbb from_a_maxlenbb = max(from_a_maxlenbb, len(Y[i])) if not xa: print('No') # x[i]=aがない return xbb_minlen = 10**10 for i in range(n): # a->..a..はok # a->b..bを考える # x[i]=b..bの必要性がある # x[i]=b..bがa->b..bのb連続列の長さ以下である必要がある allb = True for c in X[i]: if X[i]=="a": break allb=False if allb: #全てb xbb_minlen=min(xbb_minlen,len(X[i])) # x[i]=aでY[i]=bb.bb >= x[i]==bb..bb """debugprint""" # print(f"turn,a2bbMl,bbml={turn,from_a_maxlenbb,xbb_minlen}") if from_a_maxlenbb >= xbb_minlen: print('Yes') else: print('No') pass t = int(input()) for i in range(t): solve(i)