#include <bits/stdc++.h>
using namespace std;

#define REP(i, s, e) for(int i = (int)(s); i < (int)(e); ++i)
#define rep(i, n) REP(i, 0, n)

#define X real()
#define Y imag()

using D = double;
using P = complex<D>;

const D EPS = 1e-10;
namespace std {
  bool operator < (const P& a, const P& b) {
    return a.X != b.X ? a.X < b.X : a.Y < b.Y;
  }
};

struct L : array<P, 2> {
  L(const P& a, const P& b) {
    front() = a;
    back() = b;
  }
  P vec() const {
    return back() - front();
  }
};
// struct L : vector<P> {
//   L(const P& a, const P& b) {
//     push_back(a);
//     push_back(b);
//   }
//   P vec() const {
//     return back() - front();
//   }
// };
D dot(const P& a, const P& b) {
  return (conj(a)*b).X;
}
D cross(const P& a, const P& b) {
  return (conj(a)*b).Y;
}
int ccw(P a, P b, P c) {
  b -= a;
  c -= a;
  if(cross(b, c) > 0) return +1; // ccw
  if(cross(b, c) < 0) return -1; // cw
  if(dot(b, c) < 0) return +2; // L c-a-b
  if(norm(b) < norm(c)) return -2; // L a-b-c
  return 0;
}

bool intersectLL(const L& l, const L& m) {
  return abs(cross(l.vec(), m.vec())) > EPS ||
    abs(cross(l[1] - l[0], m[0] - l[0])) < EPS;
}

int main() {
  int n;
  cin >> n;
  while(n--) {
    vector<D> d(8);
    rep(i, 8) cin >> d[i];
    L s{P{d[0], d[1]}, P{d[2], d[3]}}, t{P{d[4], d[5]}, P{d[6], d[7]}};
    if(abs(cross(s.vec(), t.vec())) < EPS) cout << "YES" << endl;
    else cout << "NO" << endl;
    //    cout << s.vec().X << " " << s.vec().Y << endl;
    //    cout << t.vec().X << " " << t.vec().Y << endl;
    //    if(intersectLL(s, t)) cout << "NO" << endl;
    //    else cout << "YES" << endl;
  }
  return 0;
}

