// Java solution for problem H
// Author: Grzegorz Guspiel
import java.io.*;
import java.util.*;
class IntReader {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer tokenizer = new StringTokenizer("");
int next() throws IOException {
while (!tokenizer.hasMoreTokens()) {
tokenizer = new StringTokenizer(reader.readLine());
}
return Integer.parseInt(tokenizer.nextToken());
}
}
public class h {
final int INF = 1000100000;
class Range {
int a, b;
Range(int a, int b) {
this.a = a;
this.b = b;
}
}
Range rangeSumNeutral() {
return new Range(INF, -INF);
}
Range rangeProductNeutral() {
return new Range(-INF, INF);
}
void sum(Range r1, Range r2) {
r1.a = Math.min(r1.a, r2.a);
r1.b = Math.max(r1.b, r2.b);
}
void product(Range r1, Range r2) {
r1.a = Math.max(r1.a, r2.a);
r1.b = Math.min(r1.b, r2.b);
}
boolean contains(Range r1, Range r2) {
String prefix = "contains " + r1 + " vs " + r2;
if (r1.a <= r2.a && r1.b >= r2.b) {
return true;
} else {
return false;
}
}
boolean contains(Range r, int x) {
return r.a <= x && x <= r.b;
}
class Frame {
Range x, y, z;
void rotate() {
Range tmp = x;
x = y;
y = z;
z = tmp;
}
@Override
public String toString() {
return "frame(" + x + ", " + y + ", " + z + ")";
}
}
boolean isPositionProperInThisRotation(ArrayList frames) {
Range flatXSum = rangeSumNeutral();
Range flatYSum = rangeSumNeutral();
Range flatZSum = rangeSumNeutral();
Range flatXProduct = rangeProductNeutral();
Range flatYProduct = rangeProductNeutral();
boolean anyFlat = false;
boolean anyHook = false;
for (Frame frame : frames) if (frame.z.a == frame.z.b) {
anyFlat = true;
sum(flatXSum, frame.x);
sum(flatYSum, frame.y);
sum(flatZSum, frame.z);
product(flatXProduct, frame.x);
product(flatYProduct, frame.y);
}
for (Frame frame : frames) if (frame.z.a != frame.z.b) {
anyHook = true;
if (!contains(frame.z, flatZSum)) {
return false;
}
if (frame.x.a == frame.x.b) {
if (contains(flatXProduct, frame.x) && contains(flatYProduct, frame.y.a) && !contains(flatYSum, frame.y.b)) {
continue;
} else {
}
} else {
if (contains(flatYProduct, frame.y) && contains(flatXProduct, frame.x.a) && !contains(flatXSum, frame.x.b)) {
continue;
} else {
}
}
if (frame.x.a == frame.x.b) {
if (contains(flatXProduct, frame.x) && contains(flatYProduct, frame.y.b) && !contains(flatYSum, frame.y.a)) {
continue;
} else {
}
} else {
if (contains(flatYProduct, frame.y) && contains(flatXProduct, frame.x.b) && !contains(flatXSum, frame.x.a)) {
continue;
} else {
}
}
return false;
}
return anyFlat && anyHook;
}
void rotate(ArrayList frames) {
for (Frame frame : frames) {
frame.rotate();
}
}
boolean isPositionProper(ArrayList frames) {
for (int i = 0; i < 3; i++) {
if (isPositionProperInThisRotation(frames)) {
return true;
}
rotate(frames);
}
return false;
}
void solve() throws IOException {
IntReader reader = new IntReader();
int z = reader.next();
for (int zz = 0; zz < z; zz++) {
int n = reader.next();
ArrayList frames = new ArrayList();
for (int i = 0; i < n; i++) {
int x1 = reader.next();
int y1 = reader.next();
int z1 = reader.next();
int x2 = reader.next();
int y2 = reader.next();
int z2 = reader.next();
if (x1 > x2) {
int tmp = x1; x1 = x2; x2 = tmp;
}
if (y1 > y2) {
int tmp = y1; y1 = y2; y2 = tmp;
}
if (z1 > z2) {
int tmp = z1; z1 = z2; z2 = tmp;
}
Frame frame = new Frame();
frame.x = new Range(x1, x2);
frame.y = new Range(y1, y2);
frame.z = new Range(z1, z2);
frames.add(frame);
}
if (isPositionProper(frames)) {
System.out.println("YES");
} else {
System.out.println("NO");
}
}
}
public static void main(String[] args) throws IOException {
new h().solve();
}
} // class h