#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1.0);
const double eps = 1e-11;
template <class T>
inline T sqr(T x) {
  return x * x;
}
template <class T>
void setbit(T& v, int position) {
  v |= (T)1 << position;
}
template <class T>
void unsetbit(T& v, int position) {
  v &= ~((T)1 << position);
}
template <class T>
void togglebit(T& v, int position) {
  v ^= (T)1 << position;
}
template <class T>
bool isbit(T v, int position) {
  return (v & ((T)1 << position)) != 0;
}
template <class T>
inline int countbit(T n) {
  return (n == 0) ? 0 : (1 + countbit(n & (n - 1)));
}
string ReadToEndLine(istream& s) {
  string sLine;
  getline(s, sLine);
  return sLine;
}
char gStr[1024];
struct Runner {
  Runner(istream& in, ostream& out) : mIn(in), mOut(out) {}
  void Run();
  istream& mIn;
  ostream& mOut;
};
int Lis_NlogN(const vector<pair<long long, long long>>& V) {
  vector<int> D(V.size() + 1);
  vector<int> P(V.size());
  D[0] = -1;
  int L = 0;
  for (int i = (0); i < ((int)(V.size())); i++) {
    int lo = 1, hi = L;
    while (lo <= hi) {
      int mid = (lo + hi) / 2;
      if (V[D[mid]].second <= V[i].second)
        lo = mid + 1;
      else
        hi = mid - 1;
    }
    P[i] = D[lo - 1];
    if (lo > L) {
      D[lo] = i;
      L = lo;
    } else if (V[i].second < V[D[lo]].second) {
      D[lo] = i;
    }
  }
  return L;
}
void Runner::Run() {
  int N;
  long long V;
  mIn >> N;
  vector<pair<int, int>> E(N);
  for (int i = (0); i < ((int)(E.size())); i++) {
    int x, t;
    mIn >> x >> t;
    E[i] = make_pair(x, t);
  }
  mIn >> V;
  vector<pair<long long, long long>> Sa, S0;
  for (int i = (0); i < ((int)(E.size())); i++) {
    long long p = V * E[i].second - E[i].first;
    long long q = V * E[i].second + E[i].first;
    Sa.push_back(make_pair(p, q));
    if (V * E[i].second >= (long long)abs(E[i].first))
      S0.push_back(make_pair(p, q));
  }
  sort(Sa.begin(), Sa.end());
  sort(S0.begin(), S0.end());
  int resa = Lis_NlogN(Sa);
  int res0 = Lis_NlogN(S0);
  mOut << res0 << " " << resa << endl;
}
int main() {
  Runner runner(cin, cout);
  runner.Run();
  return 0;
}
