//実験２：総和からの消し込み
//重くて価値が低い順にソート
//重さが基準以下となるまで、価値が低い順に引いていく
function Main(input){
  //パラメータ受け取り
  input = input.split("\n");
  inputStr = input[0].split(" ");
  var N = Number.parseInt(inputStr[0]);
  var W = Number.parseInt(inputStr[1]);
  var obj = [];
  var t_w = 0;
  var t_v = 0;
  for(var i=0 ; i<N ; i++){
    inputStr = input[i+1].split(" ");
    obj.push(inputStr.map( inputStr => parseInt(inputStr)))
    //総重量と総価値を記録
    t_w += obj[obj.length-1][0];
    t_v += obj[obj.length-1][1];
  }
  //console.log("総重量",t_w);
  //console.log("総価値",t_v);
  
  //ソート(価値を昇順[1]、重さを降順[0]でソート)
  obj.sort(function(a, b){
    	//重さを降順
		if (a[0] > b[0]) return -1;
		if (a[0] < b[0]) return 1;
		//価値は昇順
		if (a[1] > b[1]) return 1;
		if (a[1] < b[1]) return -1;
		return 0;
  });
  //重量(t_w)がW以下になるまで、価値(t_v)から消しこむ
  var i=0;
  while(t_w>W){
    t_w -= obj[i][0];
    t_v -= obj[i][1];
    i++;
  }
  //console.log("消し込み後重量",t_w);
  //console.log("その時の価値",t_v);
  console.log(t_v);
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));
