#include <bits/stdc++.h>
using namespace std;
const int N = 100500;
struct node {
  long long x, y;
} xu[N];
int cc = 0;
int n;
long long a, b, c, d;
long long zhan[N];
int ans = 0;
char e, ee;
bool cmp(node x, node y) {
  if (x.x < y.x) return 1;
  if (x.x > y.x) return 0;
  return (x.y > y.y);
}
void GetData() {
  int i;
  int x, y;
  scanf("%d", &n);
  cin >> a >> e >> b >> c >> ee >> d;
  for (i = 1; i <= n; i++) {
    scanf("%d%d", &x, &y);
    long long zx = c * x - d * y;
    long long zy = b * y - a * x;
    if (zx <= 0 || zy <= 0) continue;
    cc++;
    xu[cc].x = zx;
    xu[cc].y = zy;
  }
  sort(xu + 1, xu + cc + 1, cmp);
}
int erfen(int l, int r, long long key) {
  if (l == r) return l;
  int mid = (l + r + 1) >> 1;
  if (zhan[mid] < key) return erfen(mid, r, key);
  return erfen(l, mid - 1, key);
}
void Do() {
  int i;
  int now;
  for (i = 1; i <= cc; i++) {
    now = erfen(0, ans, xu[i].y) + 1;
    zhan[now] = xu[i].y;
    if (now > ans) ans++;
  }
  printf("%d\n", ans);
}
int main() {
  GetData();
  Do();
  return 0;
}
