#include<iostream>
using namespace std;
class CPoint {
int X,Y;
public:
CPoint(int x,int y):X(x),Y(y){}
int getX() {return X;}
int getY() {return Y;}
};
class CRectangle {
friend ostream& operator<<(ostream& os, CRectangle& p);
CPoint left, right;
public:
CRectangle(int x1,int y1,int x2,int y2):left(x1,y1),right(x2,y2){}
bool operator>(CPoint& c) {
if (c.getX() >= this->left.getX() && c.getX() <= this->right.getX() && c.getY() >= this->right.getY() && c.getY() <= this->left.getY()) {
return true;
}
else {
return false;
}
}
bool operator>(CRectangle& c) {
if ((c.left.getX() >= this->left.getX() && c.left.getX() <= this->right.getX() && c.left.getY() >= this->right.getY() && c.left.getY() <= this->left.getY())
&&(c.right.getX() >= this->left.getX() && c.right.getX() <= this->right.getX() && c.right.getY() >= this->right.getY() && c.right.getY() <= this->left.getY())) {
return true;
}
else {
return false;
}
}
bool operator==(CRectangle& c) {
if (c.left.getX() == this->left.getX() && c.left.getY() == this->left.getY() && c.right.getX() == this->right.getX() && c.right.getY() == this->right.getY()) {
return true;
}
else {
return false;
}
}
bool operator*(CRectangle& c) {
if (c.left.getX()>=this->left.getX()&&c.left.getX()<=this->right.getX()||c.left.getY()>=this->right.getY()&&c.left.getY()<=this->left.getY()) {
return true;
}
else {
return false;
}
}
operator int() {
return (left.getY() - right.getY()) * (right.getX() - left.getX());
}
};
ostream& operator<<(ostream& os, CRectangle& p) {
os << p.left.getX() << " " << p.left.getY() << " " << p.right.getX() << " " << p.right.getY() ;
return os;
}
int main() {
int t, x1, x2, y1, y2;
cin >> t;
while (t--) {
cin >> x1 >> y1 >> x2 >> y2;
CRectangle rect1(x1, y1, x2, y2);
cin >> x1 >> y1 >> x2 >> y2;
CRectangle rect2(x1, y1, x2, y2);
cout << "矩形1:" << rect1 << " " << (int)rect1 << endl;
cout << "矩形2:" << rect2 << " " << (int)rect2 << endl;
if (rect1 == rect2) {
cout << "矩形1和矩形2相等"<<endl;
}
else if (rect2 > rect1) {
cout << "矩形2包含矩形1" << endl;
}
else if (rect1 > rect2) {
cout << "矩形1包含矩形2" << endl;
}
else if (rect1 * rect2) {
cout << "矩形1和矩形2相交" << endl;
}
else {
cout << "矩形1和矩形2不相交" << endl;
}
cout << endl;
}
return 0;
}