#include <bits/stdc++.h>
using namespace std;
const double EPS = 1e-9;
const double pi = acos(-1);
int dx[] = {0, 0, 1, -1, 1, 1, -1, -1};
int dy[] = {1, -1, 0, 0, -1, 1, 1, -1};
struct point {
  double x, y;
  point() { x = y = 0.0; }
  point(double _x, double _y) : x(_x), y(_y) {}
  bool operator<(point other) const {
    if (fabs(x - other.x) > EPS) return x < other.x;
    return y < other.y;
  }
  bool operator==(point other) const {
    return (fabs(x - other.x) < EPS && (fabs(y - other.y) < EPS));
  }
};
struct line {
  double a, b, c;
};
void pointsToLine(point p1, point p2, line &l) {
  if (fabs(p1.x - p2.x) < EPS) {
    l.a = 1.0;
    l.b = 0.0;
    l.c = -p1.x;
  } else {
    l.a = -(double)(p1.y - p2.y) / (p1.x - p2.x);
    l.b = 1.0;
    l.c = -(double)(l.a * p1.x) - p1.y;
  }
}
bool areParallel(line l1, line l2) {
  return (fabs(l1.a - l2.a) < EPS) && (fabs(l1.b - l2.b) < EPS);
}
bool areSame(line l1, line l2) {
  return areParallel(l1, l2) && (fabs(l1.c - l2.c) < EPS);
}
bool areIntersect(line l1, line l2, point &p) {
  if (areParallel(l1, l2)) return false;
  p.x = (l2.b * l1.c - l1.b * l2.c) / (l2.a * l1.b - l1.a * l2.b);
  if (fabs(l1.b) > EPS)
    p.y = -(l1.a * p.x + l1.c);
  else
    p.y = -(l2.a * p.x + l2.c);
  return true;
}
int main() {
  int n;
  cin >> n;
  int x1, x2;
  cin >> x1 >> x2;
  line a[n];
  for (int i = 0; i < n; ++i) {
    int k, b;
    cin >> k >> b;
    point p1(0, b), p2(1, k + b);
    pointsToLine(p1, p2, a[i]);
  }
  point Px0(x1, 0), Px1(x1, 1);
  line Lx1;
  pointsToLine(Px0, Px1, Lx1);
  point Px2(x2, 0), Px3(x2, 1);
  line Lx2;
  pointsToLine(Px2, Px3, Lx2);
  vector<pair<double, double> > segs;
  for (int i = 0; i < n; ++i) {
    double y1, y2;
    bool f = false;
    point p;
    if (!areParallel(a[i], Lx1))
      areIntersect(a[i], Lx1, p);
    else
      f = true;
    y1 = p.y;
    if (!areParallel(a[i], Lx2))
      areIntersect(a[i], Lx2, p);
    else
      f = true;
    y2 = p.y;
    if (!f) segs.push_back({y1, y2});
  }
  sort((segs).begin(), (segs).end());
  bool ok = false;
  long double lsty2 = 0, lsty1 = 0;
  for (int i = 0; i < (int)segs.size(); ++i) {
    long double y1 = segs[i].first, y2 = segs[i].second;
    if (i) {
      ok |= (y2 < lsty2);
      ok |= (y1 < lsty1);
    }
    lsty1 = y1;
    lsty2 = y2;
  }
  puts(ok ? "YES" : "NO");
}
