'use strict';
(function(input){
  input=input.trim().split(/\n/).map(str=>str.split(/\s+/).map(x=>x-0));
  const N=input[0][0];
  const W=input[0][1];
  const V=100000;
  const dp=[];//dp[i][v]で最初のi個から任意に選んで価値をvにするときのweightの最小値
  for(let i=0;i<=N;i++){
    dp[i]=[];
    for(let v=0;v<=V;v++){
      dp[i][v]=Infinity;
    }
  }
  dp[0][0]=0;
  for(let i=1;i<=N;i++){
    let wi=input[i][0];
    let vi=input[i][1];
    for(let v=0;v<=V;v++){
      dp[i][v]=dp[i-1][v];
      if(v>=vi&&dp[i][v]>(dp[i-1][v-vi]+wi))
        dp[i][v]=dp[i-1][v-vi]+wi;
    }
  }
  var ans=V;
  while(dp[N][ans]>W)ans--;
  console.log(ans);
})(require('fs').readFileSync('/dev/stdin','utf8'));
