#nullable enable #region var (_input, _iter) = (Array.Empty(), 0); T I() where T : IParsable { while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Trim().Split(' '), 0); return T.Parse(_input[_iter++], null); } #endregion bool Solve() { var n = I() * 2; var xz = new List(); var yz = new List(); for (var i = 0; i < n; i++) { var x = I(); var y = I(); var c = I(); if (c != "x") xz.Add(x); else yz.Add(y); } if (xz.Count < yz.Count) (xz, yz) = (yz, xz); var l = yz.Count; xz.Sort(); var last = -1; foreach (var x in xz) { if (x == last) { last = -1; continue; } if (last >= 0) l--; last = x; } return l >= 0; } var ans = new List(); var t = I(); while (t-- > 0) ans.Add(Solve() ? "Yes" : "No"); Console.WriteLine(string.Join(Environment.NewLine, ans));