#include <bits/stdc++.h>
using namespace std;

const double EPS = 1e-10;

struct Point{
	double x,y;
	Point(){}
	Point(double x,double y) :x(x),y(y){}
	Point operator+(Point p) {return Point(x+p.x,y+p.y);}
	Point operator-(Point p) {return Point(x-p.x,y-p.y);}
	Point operator*(double k){return Point(x*k,y*k);}
	Point operator/(double k){return Point(x/k,y/k);}
	double norm(){return x*x+y*y;}
	double abs(){return sqrt(norm());}

	bool operator < (const Point &p) const{
		return x!=p.x?x<p.x:y<p.y;
	}

	bool operator == (const Point &p) const{
		return fabs(x-p.x)<EPS && fabs(y-p.y)<EPS;
	}
};

typedef Point Vector;


bool EQ(double a, double b) {
	return abs(a - b) < EPS;
}

bool sort_x(Point a,Point b){
	return a.x!=b.x?a.x<b.x:a.y<b.y;
}

double cross(Vector a,Vector b){
	return a.x*b.y-a.y*b.x;
}

vector<Point> convex_hull(vector<Point> ps, int n) {
	sort(ps.begin(), ps.end(), sort_x);
	int k = 0;
	vector<Point> qs(n * 2);

	for (int i = 0; i < n; ++i) {
		while (k > 1 && cross((qs[k - 1] - qs[k - 2]), (ps[i] - qs[k - 1])) <= 0) k--;
		qs[k++] = ps[i];
	}

	for (int i = n - 2, t = k; i >= 0; --i) {
		while (k > t && cross((qs[k - 1] - qs[k - 2]), (ps[i] - qs[k - 1])) <= 0) k--;
		qs[k++] = ps[i];
	}

	qs.resize(k - 1);

	return qs;
}


#define fs first
#define sc second
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define rep(i, n) for (int i = 0; i < n; ++i)
#define pb emplace_back

using pii = pair<int, int>;
using vi = vector<int>;
using lint = long long;

const int inf = 1001001001;
const lint linf = 1001001001001001001ll;
const int mod = 1e9 + 7;
const int dx[]{0, 1, 0, -1, -1, -1, 1, 1}, dy[]{1, 0, -1, 0, -1, 1, -1, 1};

template<typename T> inline bool chmin(T &a, T b) { if (a > b) { a = b; } return a > b; }
template<typename T> inline bool chmax(T &a, T b) { if (a < b) { a = b; } return a < b; }
template<typename T> inline void print(const T &x, string s = "\n") { cout << x << s; }
template<typename T> inline void print(const vector<T> &v, string s = " ") 
{ rep(i, v.size()) cout << v[i] << (i + 1 == v.size() ? "\n" : s); }
inline bool inside(int y, int x, int H, int W) { return 0 <= y && y < H && 0 <= x && x < W; }
inline lint in() { lint x; std::cin>>x; return x; }

int main() {
	double a, b;
	char c;
	vector<Point> vi;
	while (cin >> a >> c >> b) {
		vi.clear();
		vi.pb(Point(a, b));
		rep(i, 3) {
			cin >> c >> a >> c >> b;
			vi.pb(Point(a, b));
		}

		vector<Point> po = convex_hull(vi, vi.size());
		cout << (po.size() == vi.size() ? "YES" : "NO") << endl;
	}
}