#include <stdio.h>
#include <stdlib.h>
void cop (int a[100][100],int b[100][100],int n){
int i,j;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
a[i][j]=b[i][j];
}
void citire(FILE *f,int n,int gutui[100][100]){
int i,h,g,x=0;
char linie[100];
for (i=0;i<n;i++){
fgets (linie,100,f);
sscanf (linie,"%d %d",&h,&g);
gutui[x][0] = h;
gutui[x][1] = g;
x++;
}
}
int determinare_max (int gutui[100][100], int n){ //determina cea mai de jos gutuie la care poate ajunge
int i,poz,max;
max = gutui[0][0];
for (i=1;i<n;i++)
if (max <= gutui[i][0]){
max = gutui[i][0];
poz = i;
}
return poz;
}
int selecteaza (int gutui[100][100], int n, int h, int rez[100][100]){ //selecteaza gutuile la care mai poate ajunge
int i,j=0,n1 = 0;
for (i=0;i<n;i++)
if (gutui[i][0] <= h && gutui[i][0] > 0){
rez[j][0] = gutui[i][0];
rez[j][1] = gutui[i][1];
j++;
n1++;
}
return n1;
}
int main (){
int i,n1,j,aux,aux2,n,h,u,jos,poz;
int suma;
FILE *f,*g;
char linie[100];
int gutui[100][100],rez[100][100];
f = fopen ("gutui.in","r");
g = fopen ("gutui.out","w");
//citire din fisier
fgets (linie,100,f);
sscanf (linie, "%d %d %d",&n,&h,&u);
citire (f,n,gutui);
suma = 0;
poz = determinare_max(gutui,n);
suma = suma + gutui[poz][1];
while (h >= gutui[poz][0] && h >= 0){
gutui[poz][0] = 0;
h = h - u;
n1 = selecteaza (gutui,n,h,rez);
if (n1 == 1){
suma = suma + gutui[0][1];
break;
}
else {
cop (gutui,rez,n1);
poz = determinare_max (gutui,n1);
suma = suma + gutui[poz][1];
gutui[poz][0] = 0;
}
}
fprintf (g,"%d\n",suma);
return 0;
}