#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;
  }
};
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(Point a, Point 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;
}
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 = " ") {
  for (int i = 0; i < v.size(); ++i)
    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.emplace_back(Point(a, b));
    for (int i = 0; i < 3; ++i) {
      cin >> c >> a >> c >> b;
      vi.emplace_back(Point(a, b));
    }
    vector<Point> po = convex_hull(vi, vi.size());
    cout << (po.size() == vi.size() ? "YES" : "NO") << endl;
  }
}
