#include <iostream>
#include <algorithm>

struct Vec2D {
	double x = 0.0, y = 0.0;

	Vec2D() = default;
	Vec2D(const Vec2D&) = default;
	Vec2D& operator = (const Vec2D&) = default;

	Vec2D(double _x, double _y) :
		x(_x), y(_y) {}

	Vec2D operator - (const Vec2D& vec) {
		return Vec2D(x - vec.x, y - vec.y);
	}
};

inline Vec2D normalize(const Vec2D& vec) {
	double k = vec.x * vec.x + vec.y * vec.y;
	return Vec2D(vec.x / k, vec.y / k);
}
inline double cross(const Vec2D& v1, const Vec2D& v2) {
	return v1.x * v2.y - v1.y * v2.x;
}

int main() {
	Vec2D vecs[3];
	Vec2D p;

	while (std::cin) {
		for (auto&& vec : vecs) {
			std::cin >> vec.x >> vec.y;
		}

		std::cin >> p.x >> p.y;

		double res[3];
		for (int i = 0; i < 3; ++i) {
			res[i] = cross(
				p - vecs[i],
				normalize(vecs[(i + 1) % 3] - vecs[i])
				);
		}

		if (
			std::all_of(res, std::end(res), [](double x) {return x > 0; }) ||
			std::all_of(res, std::end(res), [](double x) {return x < 0; })
			) {
			std::cout << "YES" << std::endl;
		}
		else
			std::cout << "NO" << std::endl;
	}
}