using System; using System.Globalization; using System.IO; using System.Linq; namespace CF317 { internal class Program { private static void Main(string[] args) { var sr = new InputReader(Console.In); //var sr = new InputReader(new StreamReader("input.txt")); var task = new Task(); using (var sw = Console.Out) //using (var sw = new StreamWriter("output.txt")) { task.Solve(sr, sw); //Console.ReadKey(); } } } internal class Task { public void Solve(InputReader sr, TextWriter sw) { var q = sr.NextInt32(); for (var t = 0; t < q; t++) { var n = sr.NextInt32(); var points = new Tuple[n]; for (var i = 0; i < n; i++) { var input = sr.ReadArray(Int32.Parse); points[i] = new Tuple(input[0], input[1]); } Array.Sort(points, (x, y) => x.Item1.CompareTo(y.Item1)); var minX = points[0].Item1; var maxX = points[n - 1].Item1; Array.Sort(points, (x, y) => x.Item2.CompareTo(y.Item2)); var minY = points[0].Item2; var maxY = points[n - 1].Item2; var can = true; //if (minX == maxX || minY == maxY) //{ // sw.WriteLine("NO"); // continue; //} for (var i = 0; i < n; i++) { var isAny = false; if (points[i].Item1 == minX) { isAny = true; if (!(points[i].Item2 >= minY && points[i].Item2 <= maxY)) { can = false; break; } } if (points[i].Item1 == maxX) { isAny = true; if (!(points[i].Item2 >= minY && points[i].Item2 <= maxY)) { can = false; break; } } if (points[i].Item2 == minY) { isAny = true; if (!(points[i].Item1 >= minX && points[i].Item1 <= maxX)) { can = false; break; } } if (points[i].Item2 == maxY) { isAny = true; if (!(points[i].Item1 >= minX && points[i].Item1 <= maxX)) { can = false; break; } } if (!isAny) { can = false; break; } } if (can) { sw.WriteLine("YES"); } else { sw.WriteLine("NO"); } } } } } internal class InputReader : IDisposable { private bool isDispose; private readonly TextReader sr; public InputReader(TextReader stream) { sr = stream; } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } public string NextString() { var result = sr.ReadLine(); return result; } public int NextInt32() { return Int32.Parse(NextString()); } public long NextInt64() { return Int64.Parse(NextString()); } public string[] NextSplitStrings() { return NextString() .Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); } public T[] ReadArray(Func func) { return NextSplitStrings() .Select(s => func(s, CultureInfo.InvariantCulture)) .ToArray(); } public T[] ReadArrayFromString(Func func, string str) { return str.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries) .Select(s => func(s, CultureInfo.InvariantCulture)) .ToArray(); } protected void Dispose(bool dispose) { if (!isDispose) { if (dispose) sr.Close(); isDispose = true; } } ~InputReader() { Dispose(false); } }