#include <iostream>

template <typename T>
struct Vector
{
    T x , y;

    auto operator - (Vector v) -> Vector
    {
        return Vector <T> {x - v.x , y - v.y};
    }
    auto cross (Vector v) -> T
    {
        return x * v.y - y * v.x;
    }
};

auto main () -> int
{
    Vector <double> vecA , vecB , vecC , vecP;
    while (std::cin >> vecA.x >> vecA.y >> vecB.x >> vecB.y >> vecC.x >> vecC.y >> vecP.x >> vecP.y)
    {
        auto vecAB = vecB - vecA;
        auto vecBC = vecC - vecB;
        auto vecCA = vecA - vecC;

        auto vecAP = vecP - vecA;
        auto vecBP = vecP - vecB;
        auto vecCP = vecP - vecC;

        auto c1 = vecAB.cross (vecAP);
        auto c2 = vecBC.cross (vecBP);
        auto c3 = vecCA.cross (vecCP);

        if (c1 < 0 && c2 < 0 && c3 < 0 || c1 > 0 && c2 > 0 && c3 > 0)
        {
            std::cout << "YES" << std::endl;
        }
        else
        {
            std::cout << "NO" << std::endl;
        }
    }
}