#include <bits/stdc++.h>
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
int n,X,L;
struct oaie
{
int dist,lana;
};
oaie a[100003];
priority_queue<int>q;
void Citire()
{
int i;
fin>>n>>X>>L;
for(i=1;i<=n;i++)
fin>>a[i].dist>>a[i].lana;
}
bool CMP(oaie A, oaie B)
{
return A.dist < B.dist;
}
void Rezolvare()
{
sort(a+1,a+n+1,CMP);
int i,st,dr;
long long sol;
sol = 0;
st = 0;
dr = X % L;
for(i=1;dr<=X;st=dr+1,dr+=L)
{
while(i<=n && st<=a[i].dist && a[i].dist<=dr)
{
q.push(a[i].lana);
i++;
}
if(!q.empty())
{
sol += q.top();
q.pop();
}
}
fout<<sol<<"\n";
}
int main()
{
Citire();
Rezolvare();
fin.close();
fout.close();
return 0;
}