#include <bits/stdc++.h>
using namespace std;
int Read() {
  char c;
  while (c = getchar(), (c != '-') && (c < '0' || c > '9'))
    ;
  bool neg = (c == '-');
  int ret = (neg ? 0 : c - 48);
  while (c = getchar(), c >= '0' && c <= '9') ret = ret * 10 + c - 48;
  return neg ? -ret : ret;
}
const double eps = 1e-10;
const int MAXN = 100005;
pair<long double, long double> a[MAXN];
double f[MAXN];
int N, A, B, C, D, ans, ord[MAXN];
bool cmp(int x, int y) {
  return fabs(a[x].first - a[y].first) < eps ? a[x].second > a[y].second
                                             : a[x].first < a[y].first;
}
void init() {
  N = Read(), A = Read(), B = Read(), C = Read(), D = Read();
  for (int i = 1; i <= N; i++) {
    double x = Read(), y = Read();
    ord[i] = i;
    a[i].first = x - (C > 0 && D > 0 ? y / C * D : 0);
    a[i].second = y - (A > 0 && B > 0 ? x / B * A : 0);
  }
  sort(ord + 1, ord + N + 1, cmp);
}
void work() {
  for (int i = 1; i <= N; i++)
    if (a[ord[i]].first > eps && a[ord[i]].second > eps) {
      int cb = lower_bound(f, f + ans, a[ord[i]].second - eps) - f;
      ans += (cb == ans);
      f[cb] = a[ord[i]].second;
    }
  printf("%d\n", ans);
}
int main() {
  init();
  work();
  return 0;
}
