program rucsac;
type vector=array[1..5000,1..2] of word;
var x:vector;
i,n,g:word;
pr,gr:longint;
fin,fout:text;
procedure sort(var v:vector);
var i,aux:word; cond:boolean;
begin
repeat cond:=true;
for i:=1 to n-1 do
if (v[i,2]<v[i+1,2])
then begin aux:=v[i,1]; v[i,1]:=v[i+1,1]; v[i+1,1]:=aux;
aux:=v[i,2]; v[i,2]:=v[i+1,2]; v[i+1,2]:=aux;
cond:=false;
end
else if (v[i,2]=v[i+1,2]) and (v[i,1]>v[i+1,1])
then begin aux:=v[i,1]; v[i,1]:=v[i+1,1]; v[i+1,1]:=aux; end;
until (cond);
end;
begin
assign(fin,'rucsac.in'); reset(fin);
assign(fout,'rucsac.out');rewrite(fout);
readln(fin,n,g);
for i:=1 to n do readln(fin,x[i,1],x[i,2]);
sort(x); i:=1; pr:=0; gr:=0;
while (i<=n) and (gr<=g) do
begin gr:=gr+x[i,1];
pr:=pr+x[i,2];
i:=i+1;
end;
i:=i-1; pr:=pr-x[i,2];
writeln (fout,pr);
close(fin);close(fout);
end.