#include<bits/stdc++.h>
using namespace std;

template<typename X, typename Y>
bool chmax(X& a, Y b) { return (a < b) ? a = b, 1 : 0; }

template<typename X, typename Y>
bool chmin(X& a, Y b) { return (a > b) ? a = b, 1 : 0; }

using ll = long long;

int n; 
ll s, v0; 

struct Op {
    ll c, v;
    bool operator<(const Op& o) const {
        if (c != o.c) return c < o.c;
        return v > o.v;
    }
};

struct Line {
    ll T, P, V;
    pair<ll, ll> eval(ll x) const {
        ll req = x - P;
        if (req <= 0) return {T, -(P - x)};
        ll dt = (req + V - 1) / V;
        return {T + dt, -(dt * V + P - x)};
    }
};

bool better(Line L1, Line L2, ll x) { return L2.eval(x) < L1.eval(x); }

ll cross(Line L1, Line L2) {
    ll low = 0, high = s + 1, ans = high;
    while (low <= high) {
        ll mid = low + (high - low) / 2;
        if (better(L1, L2, mid)) ans = mid, high = mid - 1;
        else low = mid + 1;
    }
    return ans;
}

bool bad(Line L1, Line L2, Line L3) {
    return cross(L2, L3) <= cross(L1, L2);
}

void solve() {
    cin >> n >> s >> v0;
    vector<Op> ops(n);
    for (int i = 0; i < n; i++) cin >> ops[i].c >> ops[i].v;
    sort(ops.begin(), ops.end());
    vector<Op> f;
    ll max_v = v0;
    for (auto op : ops)
        if (chmax(max_v, op.v) && op.c < s)
            f.push_back(op);
    int m = f.size();
    vector<Line> lines(m + 1);
    lines[0] = {0, 0, v0};
    deque<Line> dq;
    dq.push_back(lines[0]);
    for (int i = 1; i <= m; i++) {
        int x = f[i - 1].c;
        while ((int)dq.size() >= 2 && better(dq[0], dq[1], x)) dq.pop_front();
        auto [T, P] = dq.front().eval(x);
        lines[i] = {T, -P, f[i - 1].v};
        while ((int)dq.size() >= 2) {
            if (bad(dq[(int)dq.size() - 2], dq.back(), lines[i])) dq.pop_back();
            else break;
        }
        dq.push_back(lines[i]);
    }
    while ((int)dq.size() >= 2 && better(dq[0], dq[1], s)) dq.pop_front();
    cout << dq.front().eval(s).first << '\n';
}

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL);

    int tests = 1; // cin >> tests;
    while (tests--) solve();

    #ifdef LOCAL
    cerr << "\nTime elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
    #endif
    return 0;
}