#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;
    }
}