#include <bits/stdc++.h>
using namespace std;
int n, a, b, c, d, m, sta[100009], top;
struct point {
  long long x, y;
  bool operator<(const point &rhs) const {
    return (x < rhs.x) || (x == rhs.x) && (y > rhs.y);
  }
} p[100009];
int read() {
  int x = 1;
  char ch;
  while (ch = getchar(), ch < '0' || ch > '9')
    if (ch == '-') x = -1;
  int s = ch - '0';
  while (ch = getchar(), ch >= '0' && ch <= '9') s = s * 10 + ch - '0';
  return s * x;
}
int main() {
  n = read();
  a = read(), b = read(), c = read(), d = read();
  for (int i = 1; i <= n; i++) {
    int x = read(), y = read();
    m++;
    p[m].x = (long long)y * b - (long long)x * a;
    p[m].y = (long long)x * c - (long long)y * d;
    if (p[m].x <= 0 || p[m].y <= 0) m--;
  }
  sort(p + 1, p + m + 1);
  for (int i = 1; i <= m; i++) {
    if (!top || p[i].y > p[sta[top]].y)
      sta[++top] = i;
    else {
      int l = 1, r = top, ret = 0;
      while (l <= r) {
        if (p[i].y <= p[sta[(l + r >> 1)]].y)
          ret = (l + r >> 1), r = (l + r >> 1) - 1;
        else
          l = (l + r >> 1) + 1;
      }
      if (p[i].y < p[sta[ret]].y) sta[ret] = i;
    }
  }
  printf("%d\n", top);
  return 0;
}
