#include <bits/stdc++.h>
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
#define int long long
int n, pozMax, L, maxim = 0;
unordered_map<int, vector<int>> tin;
signed main()
{
fin >> n >> pozMax >> L;
for(int i=1; i<=n; i++) {
int poz, val; fin >> poz >> val;
int cntTure = (pozMax - poz) / L + 1; ///cate ture am oaia
tin[cntTure].push_back(val);
maxim = max(maxim, cntTure);
}
int sum = 0;
priority_queue<int> pq;
for(int i=maxim; i>=1; i--) {
for(int j : tin[i]) pq.push(j);
sum += pq.top(); pq.pop(); ///aleg oaia din tura i
}
fout << sum;
return 0;
}