#include <bits/stdc++.h>
using namespace std;
double gcd(double a, double b) { return a < 0.01 ? b : gcd(fmod(b, a), a); }
struct rec {
  int x, t;
} a[100001];
int c[100001], b, n, m, v, j;
bool operator<(rec a, rec b) {
  return (a.t * v - a.x < b.t * v - b.x ||
          a.t * v - a.x == b.t * v - b.x && a.t * v + a.x < b.t * v + b.x);
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> a[i].x >> a[i].t;
  a[++n] = (rec){0, 0};
  cin >> v;
  sort(a + 1, a + n + 1);
  for (int i = n; i > 0; i--) {
    b = (-a[i].t * v - a[i].x);
    j = upper_bound(c + 1, c + m + 1, b) - c;
    if (!a[i].t && !a[i].x)
      cout << j - 1 << " ";
    else
      c[j] = b, m = max(m, j);
  }
  cout << m;
  return 0;
}
