#pragma GCC optimize("O2") #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define int ll #define INT128_MAX (__int128)(((unsigned __int128) 1 << ((sizeof(__int128) * __CHAR_BIT__) - 1)) - 1) #define INT128_MIN (-INT128_MAX - 1) #define clock chrono::steady_clock::now().time_since_epoch().count() #ifdef DEBUG #define dbg(x) cout << (#x) << " = " << x << '\n' #else #define dbg(x) #endif namespace R = std::ranges; namespace V = std::views; using namespace std; using ll = long long; using ull = unsigned long long; using ldb = long double; using pii = pair; using pll = pair; //#define double ldb template ostream& operator<<(ostream& os, const pair pr) { return os << pr.first << ' ' << pr.second; } template ostream& operator<<(ostream& os, const array &arr) { for(const T &X : arr) os << X << ' '; return os; } template ostream& operator<<(ostream& os, const vector &vec) { for(const T &X : vec) os << X << ' '; return os; } template ostream& operator<<(ostream& os, const set &s) { for(const T &x : s) os << x << ' '; return os; } //source: KACTL template int sgn(T x) { return (x > 0) - (x < 0); } template struct Point { typedef Point P; T x, y; explicit Point(T x=0, T y=0) : x(x), y(y) {} bool operator<(P p) const { return tie(x,y) < tie(p.x,p.y); } bool operator==(P p) const { return tie(x,y)==tie(p.x,p.y); } P operator+(P p) const { return P(x+p.x, y+p.y); } P operator-(P p) const { return P(x-p.x, y-p.y); } P operator*(T d) const { return P(x*d, y*d); } P operator/(T d) const { return P(x/d, y/d); } T dot(P p) const { return x*p.x + y*p.y; } T cross(P p) const { return x*p.y - y*p.x; } T cross(P a, P b) const { return (a-*this).cross(b-*this); } T dist2() const { return x*x + y*y; } double dist() const { return sqrt((double)dist2()); } // angle to x-axis in interval [-pi, pi] double angle() const { return atan2(y, x); } P unit() const { return *this/dist(); } // makes dist()=1 P perp() const { return P(-y, x); } // rotates +90 degrees P normal() const { return perp().unit(); } // returns point rotated 'a' radians ccw around the origin P rotate(double a) const { return P(x*cos(a)-y*sin(a),x*sin(a)+y*cos(a)); } friend ostream& operator<<(ostream& os, P p) { return os << "(" << p.x << "," << p.y << ")"; } }; using P = Point; //source: KACTL template double lineDist(const P& a, const P& b, const P& p) { return (double)(b-a).cross(p-a)/(b-a).dist(); } P linearTransformation(const P& p0, const P& p1, const P& q0, const P& q1, const P& r) { P dp = p1-p0, dq = q1-q0, num(dp.cross(dq), dp.dot(dq)); return q0 + P((r-p0).cross(num), (r-p0).dot(num))/dp.dist2(); } template bool onSegment(P s, P e, P p) { return p.cross(s, e) == 0 && (s - p).dot(e - p) <= 0; } template int sideOf(P s, P e, P p) { return sgn(s.cross(e, p)); } template int sideOf(const P& s, const P& e, const P& p, double eps) { auto a = (e-s).cross(p-s); double l = (e-s).dist()*eps; return (a > l) - (a < -l); } template bool lineInter(P s1, P e1, P s2, P e2) { auto d = (e1 - s1).cross(e2 - s2); if (d == 0) // if parallel return false; else return true; } template vector

segInter(P a, P b, P c, P d) { auto oa = c.cross(d, a), ob = c.cross(d, b), oc = a.cross(b, c), od = a.cross(b, d); // Checks if intersection is single non-endpoint point. if (sgn(oa) * sgn(ob) < 0 && sgn(oc) * sgn(od) < 0) return {(a * ob - b * oa) / (ob - oa)}; set

s; if (onSegment(c, d, a)) s.insert(a); if (onSegment(c, d, b)) s.insert(b); if (onSegment(a, b, c)) s.insert(c); if (onSegment(a, b, d)) s.insert(d); return {begin(s), end(s)}; } template P lineProj(P a, P b, P p, bool refl=false) { P v = b - a; return p - v.perp()*(1+refl)*v.cross(p-a)/v.dist2(); } template bool sameDir(P a, P b, P c, P d) { P l = b - a, r = d - c; l.x /= max(abs(l.x), 1ll), l.y /= max(abs(l.y), 1ll); r.x /= max(abs(r.x), 1ll), r.y /= max(abs(r.y), 1ll); return l == r; } signed main() { ios::sync_with_stdio(false), cin.tie(NULL); int t; cin >> t; while(t--) { P a, b, c, d; cin >> a.x >> a.y >> b.x >> b.y >> c.x >> c.y >> d.x >> d.y; if (a == c and b == d) { cout << "Yes\n"; continue; } if (lineInter(a, b, c, d) or !sameDir(a, b, c, d) or (c - d).dist2() >= (a - b).dist2()) { cout << "No\n"; } else { cout << "Yes\n"; } } return 0; }