#include <bits/stdc++.h>
//#define int long long
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
int n, x, l;
long long blanaa=0;
struct oaie {
int dist, blana;
bool operator<(const oaie &o) const {
if (dist != o.dist) {
return dist < o.dist;
}
else {
return blana < o.blana;
}
}
};
oaie v[100000];
priority_queue<oaie> pq;
signed main() {
fin>>n>>x>>l;
for (int i=0;i<n;++i) {
fin>>v[i].dist>>v[i].blana;
pq.push(v[i]);
//cout<< pq.top().blana<<endl;
}
// for (int i=0;i<n;++i) {
// cout<<pq.top().dist<<" "<<pq.top().blana<<endl;
// pq.pop();
// }
int ll=0 ;
while (pq.size()>0) {
int b_m_loc=-1;
while (pq.size()>0 && pq.top().dist+ll+l>x) {
b_m_loc=max(b_m_loc,pq.top().blana);
// if (pq.size()==1) {
// break;
// }
pq.pop();
}
blanaa+=b_m_loc;
// if () {
// blanaa+=pq.top().blana;
// //cout<<pq.top().blana<<" "<<pq.top().dist+ll<<endl;
ll+=l;
//
// }
}
fout<<blanaa;
return 0;
}