#include <iostream>
#include <complex>

double x[3], y[3], xp, yp;

#define EPS 0.000001
typedef std::complex<double> P;

double cross(P a, P b) {
    return (a.real() * b.imag() - a.imag() * b.real());
}

bool is_intersected(P a1, P a2, P b1, P b2) 
{
    return ( cross(a2 - a1, b1 - a1) * cross(a2 - a1, b2 - a1) < EPS ) &&
           ( cross(b2 - b1, a1 - b1) * cross(b2 - b1, a2 - b1) < EPS);
}

void solve(void)
{
    P left(-101, yp);
    P right(101, yp);
    bool in_triangle = false;
    if ( ( is_intersected( P(x[0], y[0]), P(x[1], y[1]), left, P(xp, yp) ) ||
           is_intersected( P(x[1], y[1]), P(x[2], y[2]), left, P(xp, yp) ) ||
           is_intersected( P(x[2], y[2]), P(x[0], y[0]), left, P(xp, yp) ) ) &&
         ( is_intersected( P(x[0], y[0]), P(x[1], y[1]), right, P(xp, yp) ) ||
           is_intersected( P(x[1], y[1]), P(x[2], y[2]), right, P(xp, yp) ) ||
           is_intersected( P(x[2], y[2]), P(x[0], y[0]), right, P(xp, yp) ) ) ) {
        in_triangle = true;
    }

   if (in_triangle) {
        std::cout << "YES\n";
    } else {
        std::cout << "NO\n";
    }
}

int main(void)
{
    while (std::cin >> x[0] >> y[0] >> x[1] >> y[1] >> x[2] >> y[2] >> xp >> yp) {
        solve();
    }
    return 0;
}