#include #include using namespace std; using namespace atcoder; typedef long long ll; #define rep(i, n) for (ll i = 0; i < (ll)(n); i++) static const double pi = 3.141592653589793; const ll INF = 1LL << 60; const ll mod = 1000000007; const ll imod = 998244353; using mint = modint998244353; vector dx = {1, 0, -1, 0}, dy = {0, 1, 0, -1}; ll P(ll x, ll n) { ll ret = 1; while (n > 0) { if (n & 1) ret *= x; x *= x; n >>= 1; } return ret; } void seek(bool f){ cout << (f ? "Yes" : "No") << endl; } int main(){ int T; cin >> T; while(T--){ int N; cin >> N; vector A(N), B(N); rep(i, N){ cin >> A[i] >> B[i]; } vector> PA(N), PB(N); rep(i, N){ int Aa = count(A[i].begin(), A[i].end(), 'a'); int Ab = count(A[i].begin(), A[i].end(), 'b'); PA[i] = {Aa, Ab}; int Ba = count(B[i].begin(), B[i].end(), 'a'); int Bb = count(B[i].begin(), B[i].end(), 'b'); PB[i] = {Ba, Bb}; } bool f = false; rep(i, N){ if(A[i] == "a"){ f = true; } } if(!f){ cout << "No" << endl; continue; } bool f1 = false; rep(i, N){ if(A[i] == "a" and PB[i].first > 0){ f1 = true; } } if(f1){ cout << "Yes" << endl; continue; } int amas = 1e9, bmas = 0; rep(i, N){ if(A[i] == "a"){ if(PB[i].second == B[i].size()){ bmas = max(bmas, (int)B[i].size()); } } if(PA[i].second == A[i].size()){ amas = min(amas, (int)A[i].size()); } } if(amas <= bmas){ cout << "Yes" << endl; } else{ cout << "No" << endl; } } }