#include <bits/stdc++.h>
#define ll long long
#define fi first
#define se second
using namespace std;
ifstream in("lupu.in");
ofstream out("lupu.out");
int n;
ll x, l, ans, add, a, b;
multiset <pair <ll, ll> > h, hb, bad;
int main() {
in >> n >> x >> l;
for (int i = 1; i <= n; i++) {
in >> a >> b;
h.insert({a, b});
hb.insert({b, a});
}
int p = n;
for (int i = 1; i <= n; i++) {
if (h.size() == 0)
break;
while (h.size()) {
auto it = h.end();
it--;
auto v = *it;
if (v.fi + add + l > x) {
bad.insert({v.se, v.fi});
h.erase(it);
hb.erase(hb.find({v.se, v.fi}));
} else break;
}
if (bad.size()) {
auto it = bad.end();
it--;
ans += (*it).fi;
bad.clear();
} else {
auto it = hb.end();
it--;
ans += (*it).fi;
hb.erase(it);
h.erase(h.find({(*it).se, (*it).fi}));
}
add += l;
}
out << ans;
return 0;
}