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>
using namespace std;
#define int long long
#define fi first
#define se second
typedef pair<int, int> ii;

vector<ii> a;
vector<int> d;
vector<vector<int> > G;
int n, V, mx = 0;

bool check(ii a, ii b)
{
    return ((long double)abs(a.fi-b.fi)/(b.se-a.se) <= (long double)V && a.se <= b.se);
}

void dfs(int x)
{
    for (int i = 0; i < G[x].size(); ++i)
        {
            d[G[x][i]] = max(d[G[x][i]], d[x]+1);
            mx = max(mx, d[G[x][i]]);
            dfs(G[x][i]);
        }
}

main()
{
    freopen("tourist.inp", "r", stdin);
    freopen("tourist.out", "w", stdout);
    cin >> n;
    a.assign(n, ii(0, 0));
    for (int i = 0; i < n; ++i)
        cin >> a[i].fi >> a[i].se;
    cin >> V;

    G.assign(n+1, vector<int>());
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < n; ++j)
            if (i != j && check(a[i], a[j]))
                G[i].push_back(j);
    for (int i = 0; i < n; ++i)
        if (check(ii(0, 0), a[i]))
            G[n].push_back(i);

    d.assign(n+1, 0);
    d[n] = 1;
    dfs(n);
    cout << mx-1 << " ";
    d.assign(n+1, 0);
    mx = 1;
    for (int i = 0; i < n; ++i)
    {
        d[i] = 1;
        dfs(i);
        d.assign(n+1, 0);
    }
    cout << mx;
}
