#include <bits/stdc++.h>
using namespace std;
bool flag = true;
struct node {
  double x, y;
  void read() { scanf("%lf%lf", &x, &y); }
} A, B, all;
node m1, m2, w1, w2;
struct xian {
  node a, b;
  double A, B, C;
  void build(node m, node n) {
    a = m;
    b = n;
    if (a.x == b.x) {
      B = 0;
      A = 1;
      C = -a.x;
      return;
    }
    double k = (b.y - a.y) / (b.x - a.x);
    A = k;
    B = -1;
    C = a.y - k * a.x;
  }
} mu, m, w;
bool jiao(xian A, xian B) {
  if (A.A * B.B == A.B * B.A) {
    if (A.C == B.C) {
      if (max(A.a.x, A.b.x) > min(B.a.x, B.b.x)) return true;
    }
    return false;
  }
  double y = -(B.C * A.A - B.A * A.C) / (A.A * B.B - A.B * B.A);
  double x;
  if (A.A != 0) {
    x = (0 - A.B * y - A.C) / A.A;
  } else {
    x = (0 - B.B * y - B.C) / B.A;
  }
  all.x = x;
  all.y = y;
  if (y < min(A.a.y, A.b.y) || y > max(A.a.y, A.b.y)) return false;
  if (y < min(B.a.y, B.b.y) || y > max(B.a.y, B.b.y)) return false;
  if (x < min(A.a.x, A.b.x) || x > max(A.a.x, A.b.x)) return false;
  if (x < min(B.a.x, B.b.x) || x > max(B.a.x, B.b.x)) return false;
  return true;
}
node opp(node a, xian p) {
  node ret;
  if (p.B == 0) {
    ret.y = a.y;
    ret.x = 2 * (-p.C) / p.A - a.x;
    return ret;
  }
  if (p.A == 0) {
    ret.x = a.x;
    ret.y = 2 * (-p.C) / p.B - a.y;
    return ret;
  }
  double x = (-2 * p.C + (p.B * p.B / p.A) * a.x - 2 * p.B * a.y - p.A * a.x) /
             (p.A + p.B * p.B / p.A);
  double y = p.B / p.A * x - p.B / p.A * a.x + a.y;
  ret.x = x;
  ret.y = y;
  return ret;
}
bool judge1() {
  if (jiao(mu, w)) return false;
  if (jiao(mu, m)) return false;
  return true;
}
bool fen(node a, node b, xian p) {
  double t1 = a.x * p.A + a.y * p.B + p.C;
  double t2 = b.x * p.A + b.y * p.B + p.C;
  if (t1 * t2 < 0) return false;
  return true;
}
bool judge2() {
  if (!fen(A, B, m)) return false;
  node tmp = opp(B, m);
  xian mu;
  mu.build(A, tmp);
  if (jiao(mu, w)) return false;
  if (!jiao(mu, m))
    return false;
  else {
    mu.build(A, all);
    node tt = all;
    if (jiao(mu, w)) return false;
    mu.build(B, tt);
    if (jiao(mu, w)) return false;
  }
  return true;
}
int main() {
  A.read();
  B.read();
  w1.read();
  w2.read();
  m1.read();
  m2.read();
  mu.build(A, B);
  w.build(w1, w2);
  m.build(m1, m2);
  if (judge1()) {
    puts("YES");
    return 0;
  }
  if (judge2()) {
    puts("YES");
    return 0;
  }
  puts("NO");
  return 0;
}
