#include<fstream>
#include<queue>
using namespace std;
struct comparator
{
bool operator()(const pair<int, int> &p1, const pair<int, int> &p2)
{
if (p1.second < p2.second)
return 1;
else if (p1.second == p2.second)
{
return p1.first < p2.first;
}
else
return 0;
}
};
priority_queue<pair<int, int>, vector<pair<int, int>>, comparator> PQ;
ifstream in("lupu.in");
ofstream out("lupu.out");
int main()
{
int N, X, L;
in >> N >> X >> L;
for (int i = 1;i <= N;++i)
{
int a, b;
in >> a >> b;
PQ.push(make_pair(a, b));
}
long long s = 0;
int j = 0;
while (PQ.size())
{
pair<int, int> e = PQ.top();
if (e.first + L*j <= X)
s += e.second,++j;
PQ.pop();
}
out << s;
return 0;
}