#include <bits/stdc++.h>
void Get(int &T) {
  char C;
  bool F = 0;
  for (; C = getchar(), C < '0' || C > '9';)
    if (C == '-') F = 1;
  for (T = C - '0'; C = getchar(), C >= '0' && C <= '9'; T = T * 10 + C - '0')
    ;
  F && (T = -T);
}
void Get(long long &T) {
  char C;
  bool F = 0;
  for (; C = getchar(), C < '0' || C > '9';)
    if (C == '-') F = 1;
  for (T = C - '0'; C = getchar(), C >= '0' && C <= '9'; T = T * 10 + C - '0')
    ;
  F && (T = -T);
}
int N;
long long X[100005];
long long T[100005];
int Order[100005];
long long V;
int F[100005];
bool Cmp(int A, int B) {
  if (T[A] != T[B]) return T[A] < T[B];
  return X[A] < X[B];
}
void Init() {
  Get(N);
  for (int i = 1; i <= N; i++) {
    Get(X[i]);
    Get(T[i]);
    Order[i] = i;
  }
  Get(V);
  for (int i = 0; i <= N; i++) {
    long long NewX = X[i] + T[i] * V;
    long long NewY = -X[i] + T[i] * V;
    X[i] = NewX;
    T[i] = NewY;
  }
  std::sort(Order + 1, Order + N + 1, Cmp);
}
long long Stack[100005];
int StackTop;
int BinSrh(int L, int R, long long X) {
  for (;;) {
    if (L == R) return L;
    if (L + 1 == R) {
      if (X < Stack[L]) return L;
      return R;
    }
    int Mid = L + R;
    Mid >>= 1;
    if (X < Stack[Mid])
      R = Mid;
    else
      L = Mid;
  }
}
int Ans1, Ans2;
void Work() {
  F[0] = 0;
  memset(Stack, 0x2f, sizeof Stack);
  Stack[0] = X[0];
  StackTop = 0;
  for (int k = 1, i; k <= N; k++) {
    i = Order[k];
    int Pos = BinSrh(0, StackTop + 1, X[i]);
    if (T[i] < T[0] || X[i] < X[0]) continue;
    F[i] = Pos;
    Stack[Pos] = X[i];
    if (Pos == StackTop + 1) StackTop++;
    if (F[i] > Ans1) Ans1 = F[i];
  }
  F[0] = 0;
  memset(Stack, 0x2f, sizeof Stack);
  Stack[0] = 0xc0c0c0c0c0c0c0c0ll;
  StackTop = 0;
  for (int k = 1, i; k <= N; k++) {
    i = Order[k];
    int Pos = BinSrh(0, StackTop + 1, X[i]);
    F[i] = Pos;
    Stack[Pos] = X[i];
    if (Pos == StackTop + 1) StackTop++;
    if (F[i] > Ans2) Ans2 = F[i];
  }
}
void Output() { printf("%d %d\n", Ans1, Ans2); }
int main() {
  Init();
  Work();
  Output();
  return 0;
}
