#include <bits/stdc++.h>
using namespace std;
template <class T>
inline bool rd(T &ret) {
  char c;
  int sgn;
  if (c = getchar(), c == EOF) return false;
  while (c != '-' && (c < '0' || c > '9')) c = getchar();
  sgn = (c == '-') ? -1 : 1;
  ret = (c == '-') ? 0 : (c - '0');
  while (c = getchar(), c >= '0' && c <= '9') ret = ret * 10 + (c - '0');
  ret *= sgn;
  return true;
}
template <class T>
inline void pt(T x) {
  if (x < 0) {
    putchar('-');
    x = -x;
  }
  if (x > 9) pt(x / 10);
  putchar(x % 10 + '0');
}
struct Point {
  double x, y;
  Point() {}
  Point(double x1, double x2) { x = x1, y = x2; }
};
int n;
long long x1, x2;
vector<long long> k, b;
bool solve() {
  vector<long long> a(n), c(n);
  for (int i = 0; i < n; ++i) a[i] = i, c[i] = i;
  sort(a.begin(), a.end(), [&](int i, int j) {
    long long yi = (long long)k[i] * x1 + b[i];
    long long yj = (long long)k[j] * x1 + b[j];
    if (yi != yj)
      return yi < yj;
    else
      return k[i] < k[j];
  });
  sort(c.begin(), c.end(), [&](int i, int j) {
    long long yi = (long long)k[i] * x2 + b[i];
    long long yj = (long long)k[j] * x2 + b[j];
    if (yi != yj)
      return yi < yj;
    else
      return k[i] > k[j];
  });
  return a != c;
}
int main() {
  rd(n);
  k.resize(n), b.resize(n);
  scanf("%I64d%I64d", &x1, &x2);
  for (int i = 0; i < n; ++i) scanf("%I64d%I64d", &k[i], &b[i]);
  if (solve())
    puts("YES");
  else
    puts("NO");
  return 0;
}
