#include <iostream>
#include <vector>
#include <cmath>

template <typename T> 
class Point
{
private:
    T x;
    T y;
public:
    Point(T x=0, T y=0): x(x), y(y) {}
    T getx() const {return x;}
    T gety() const {return y;}

    static T norm2(Point<T> a, Point<T> b) 
    {
        return std::pow(a.x-b.x, 2) + std::pow(a.y-b.y, 2);
    }
};

template <typename T>
void distance_argmax(std::vector<Point<T>> ps, int& a, int& b)
{
    T max_d{-1};
    for(int i=0; i<ps.size(); ++i)
    {
        for(int j=i; j<ps.size(); ++j)
        {
           if(i != j)
           {
               T d = Point<T>::norm2(ps[i], ps[j]);
               if(d > max_d)
               {
                   a = i;
                   b = j;
                   max_d = d;
               }
           }
        }
    }
}

int main()
{
    double x{0}; double y{0};
    std::vector<Point<double>> points(4);
    int i = 0;

    while(std::cin >> x >> y)
    {
        int idx = i % points.size();
        points[idx] = Point<double>(x, y);
        //std::cout << points[idx].getx() << " " << points[idx].getx() << std::endl;
        if(idx == (points.size()-1))
        {
            int a, b;
            distance_argmax<double>(points, a, b);
            auto ans = a!=points.size()-1 && b!=points.size()-1 ? "YES" : "NO";
            std::cout << ans << std::endl;;
        }
        ++i;
    }

    return 0;
}