#include <fstream>
#include <queue>
#include <algorithm>
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
struct elem
{
int strat,l;
}a[100001];
priority_queue<int> v;
int n,x,L,k,d,nro;
long long sol;
bool cmp(elem a, elem b)
{
return a.strat>b.strat;
}
int main()
{
fin>>n>>x>>L;
for(int i=1;i<=n;i++)
{
fin>>d>>a[i].l;
a[i].strat=(x-d)/L+1;
}
sort(a+1,a+n+1,cmp);
k=x/L+1;
nro=1;
for(int i=k;i>=1;i--)
{
while(nro<=n && a[nro].strat==i)
{
v.push(a[nro].l);
nro++;
}
if(!v.empty())
sol+=v.top(),v.pop();
}
fout<<sol;
return 0;
}