#include<iostream>
#include<functional>
using namespace std;

class Vec{
public:
	double x, y;
	Vec(const double x, const double y) :x(x), y(y){}
	Vec() :x(0), y(0){}
	double cross(const Vec& tgt){
		return (x*tgt.y) - (y*tgt.x);
	}
};

Vec operator - (const Vec& v2, const Vec& v1){
	Vec v(v2.x - v1.x, v2.y - v1.y);
	return v;
}

istream& operator >> (istream& strm, Vec& v){
	strm >> v.x >> v.y;
	return strm;
}

bool direc_v(const Vec& v1, const Vec& v2, const Vec& vp){
	if ((v2 - v1).cross(vp - v2) >= 0) return true;
	return false;
}

int main(){
	Vec a, b, c, p;
	
	auto direc = bind(direc_v, placeholders::_1, placeholders::_2, ref(p));

	while (cin >> a >> b >> c >> p){
		if (direc(a, b) != direc(b, c)){
			cout << "NO" << endl;
			continue;
		}
		if (direc(a, b) != direc(c, a)){
			cout << "NO" << endl;
			continue;
		}
		cout << "YES" << endl;
	}

	return 0;
}