#include #define _ << " " << #define tr(x) cout << #x _ x << endl #define fi first #define se second #ifdef _WIN32 #define LD "%I64d" #else #define LD "%ld" #endif using namespace std; typedef long long ll; struct Point { int x, y; Point (int x, int y) : x(x), y(y) { } }; bool cmpX(const Point & a, const Point & b) { if (a.x == b.x) return a.y < b.y; return a.x < b.x; } bool cmpY(const Point & a, const Point & b) { if (a.y == b.y) return a.x < b.x; return a.y < b.y; } int n; vector pts; int read() { if (scanf("%d", &n) < 1) { return 0; } pts.clear(); int x, y; for (int i = 0; i < n; i++) { scanf("%d%d", &x, &y); pts.push_back(Point(x, y)); } return 1; } void solve() { if (n == 1) { printf("YES\n"); return ; } if (n == 2) { if (pts[0].x == pts[1].x || pts[0].y == pts[1].y) { printf("YES\n"); } else { printf("NO\n"); } return ; } int minx = (int) 1e8, maxx = - (int) 1e8; int miny = (int) 1e8, maxy = - (int) 1e8; for (int i = 0; i < n; i++) { if (minx > pts[i].x) minx = pts[i].x; if (maxx < pts[i].x) maxx = pts[i].x; if (miny > pts[i].y) miny = pts[i].y; if (maxy < pts[i].y) maxy = pts[i].y; } sort(pts.begin(), pts.end(), cmpX); assert(pts[0].x == minx && pts[n - 1].x == maxx); int oy = (int) 1e8; for (int i = 1; i < n - 1; i++) { if (oy == (int) 1e8) { oy = pts[i].y; } else if (oy != pts[i].y && minx != pts[i].x && maxx != pts[i].x) { printf("NO\n"); return ; } } sort(pts.begin(), pts.end(), cmpY); assert(pts[0].y == miny && pts[n - 1].y == maxy); int ox = (int) 1e8; for (int i = 1; i < n - 1; i++) { if (ox == (int) 1e8) { ox = pts[i].x; } else if (ox != pts[i].x && miny != pts[i].y && maxy != pts[i].y) { printf("NO\n"); return ; } } printf("YES\n"); } int q; int main(int argc, char *argv[]) { scanf("%d", &q); while (q-- && read()) { solve(); } }