//搜索法的思考就是
//想象一棵二叉树,对于每个物品都有选择或者不选择两种情况
//然后我们遍历所有情况
include[HTML_REMOVED]
using namespace std;
int w[1010],v[1010];
int maxvalue=0,num,maxv;
void search(int h,int val,int nv){
if(nv>maxv) return;
if(h==num+1){
if(val>maxvalue) maxvalue=val;
return;
}
search(h+1,val+w[h],nv+v[h]);
search(h+1,val,nv);
}
int main(){
cin>>num>>maxv;
for(int i=1;i<=num;i++) cin>>v[i]>>w[i];
search(1,0,0);
cout<<maxvalue;
}