program rucsac;
uses crt;
type vect=array[1..50,1..2] of integer;
var x:vect;
i,n,j,g,w,p:integer;t,z:text;
procedure sortare(var x:vect;n:integer);
var i,aux,aup:integer;c:boolean;
begin
repeat
c:=true;
for i:=1 to n-1 do if (x[i,2]<x[i+1,2]) then begin
aux:=x[i,2];aup:=x[i,1];
x[i,2]:=x[i+1,2];x[i,1]:=x[i+1,1];
x[i+1,2]:=aux;x[i+1,1]:=aup;
c:=false;
end
else if (x[i,2]=x[i+1,2])and(x[i,1]>x[i+1,1]) then begin
aux:=x[i,2];aup:=x[i,1];
x[i,2]:=x[i+1,2];x[i,1]:=x[i+1,1];
x[i+1,2]:=aux;x[i+1,1]:=aup;
c:=false;
end;
until c;
end;
begin
clrscr;
assign(t,'rucsac.in');reset(t);
assign(z,'rucsac.out');rewrite(z);
readln(t,n,g);
for i:=1 to n do readln(t,x[i,1],x[i,2]);
sortare(x,n);
i:=1;p:=0;
repeat
g:=g-x[i,1];
if g>=0 then p:=x[i,2]+p
else g:=g+x[i,1];
i:=i+1;
until (g=0) or (i>n);
write(z,p);
close(t);
close(z);
end.