#include <stdio.h>
#include <stdlib.h>
#define N 10000
void citire(FILE *f,int n,int gutui[N][N]){
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][1] = h;
gutui[x][2] = g;
x++;
}
}
void determinare_max (int gutui[N][N], int n, int max, int k){ //determina cel mai de jos gutuie la care poate ajunge
int i;
max = gutui[0][0];
for (i=1;i<n;i++)
if (max < gutui[i][0]){
max = gutui[i][0];
k = i;
}
}
int selecteaza (int gutui[N][N], int n, int h, int rez[N][N]){ //selecteaza gutuile la care mai poate ajunge
int i,j=0;
for (i=0;i<n;i++)
if (gutui[i][0] < h){
rez[j][0] = gutui[i][0];
rez[j][1] = gutui[i][1];
j++;
}
return n;
}
int main (){
int i,n1,n,h,u,jos,poz;
int suma = 0;
FILE *f,*g;
char linie[100];
int gutui[N][N],rez[N][N];
f = fopen ("gutui.txt","r");
g = fopen ("out.txt","w");
//citire din fisier
fgets (linie,100,f);
sscanf (linie, "%d %d %d",&n,&h,&u);
citire (f,n,gutui);
determinare_max (gutui,n,jos,poz);
while (h > jos){
suma = suma + gutui[1][poz];
gutui[0][poz] = -1;
h = h - u;
n1 = selecteaza (gutui,n,h,rez);
if (n1 == 1)
suma = suma + rez[0][1];
else
determinare_max (rez,n1,jos,poz);
}
fprintf (g,"%d\n",suma);
return 0;
}