#include <stdio.h>
int main(void)
{
FILE *fin=NULL, *fout=NULL;
fin=fopen("rucsac.in","r");
fout=fopen("rucsac.out","w");
int N,G;
fscanf(fin,"%d %d", &N, &G);
int greutate[5000], valoare[5000], ord[5000];
for(int i=0; i<N; i++)
{
fscanf(fin,"%d %d",&greutate[i], &valoare[i]);
ord[i]=i;
}
int schimb;
do
{
schimb=0;
for(int i=0; i<N-1; i++)
{
if(valoare[ord[i]]/greutate[ord[i]]<valoare[ord[i+1]]/greutate[ord[i+1]])
{
int aux=ord[i];
ord[i]=ord[i+1];
ord[i+1]=aux;
schimb=1;
}
}
}while(schimb);
int capacitate=0, profit=0;
for(int i=0; i<N && capacitate<=G; i++)
{
if((capacitate+greutate[ord[i]])<=G)
{
capacitate=capacitate+greutate[ord[i]];
profit=profit+valoare[ord[i]];
}
}
fprintf(fout,"%d\n", profit);
fclose(fin);
fclose(fout);
return 0;
}