12
-6712 6
2375 73
4643 197
-5660 215
-378 223
2228 307
3305 340
3449 468
-4389 707
-7161 729
-1838 921
-1655 985
730
 5
1 5
6 7
17127 17
17072 42
17042 77
3
 7
-976754 20479
79929143 911181
9598220 82517
-51609349 810257
67416551 266544
-14170975 307690
-15476178 491195
352
 22
-5301 602
-1400 194
-8512 987
-282 962
6484 494
9091 523
-7744 92
6002 461
5053 305
-1339 272
-821 165
9308 785
929 421
8384 883
1266 157
8411 923
-2949 885
7725 687
6859 197
-7630 867
5031 918
5662 410
41

11 12
 2 3
 5 5
 9 9

#include<bits/stdc++.h>
#define ll long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const ll inf=10000000000000000000;
const int maxn=200010;
struct in{
    ll x,y;
    friend bool operator <(in w,in v){ return w.x<v.x; }
}s[maxn];
ll a[maxn],x[maxn],t[maxn]; int ans1,ans2;
int main()
{
    int N,V,tot,pos;
    scanf("%d",&N);
    rep(i,1,N) scanf("%lld%lld",&x[i],&t[i]);
    scanf("%d",&V);
    rep(i,1,N) s[i].x=x[i]+t[i]*V,s[i].y=-x[i]+t[i]*V;
    sort(s+1,s+N+1); s[0].y=-inf;
    tot=0;
    rep(i,1,N) {
        pos=upper_bound(a+1,a+tot+1,s[i].y)-a;
        a[pos]=s[i].y;
        if(pos>tot) tot=pos;
    }
    ans1=tot;
    tot=0;
    rep(i,1,N) {
        if(s[i].x<0||s[i].y<0) continue;
        pos=upper_bound(a+1,a+tot+1,s[i].y)-a;
        a[pos]=s[i].y;
        if(pos>tot) tot=pos;
    }
    ans2=tot;
    printf("%d\n%d\n",ans2,ans1);
    return 0;
}
