import java.util.Scanner

object Main extends App { 
  type Item = (Int, Int)
  class DP(num:Int, wgt:Int, items:Array[Item]) {
    val inf = Int.MaxValue >> 1
    val sumOfValue = items.foldLeft(0)((sum:Int, item:Item) => { val (v,w)=item; v+sum })
    val memo = Array.fill(num+1)(Array.fill(sumOfValue+1)(inf))
    memo.foreach((a)=>a(0)=0)
    def solver():Int = {
      var maxValue = 0 
      for (i <- 1 to num; j <- 1 to sumOfValue) {
        val (v, w) = items(i-1)
        val w0 = memo(i-1)(j)
        val w1 = if (j < v) w else memo(i-1)(j-v) + w
        val wmin = w0 min w1
        if (wmin <= wgt) maxValue = maxValue max j
        memo(i)(j)= wmin
      }
      maxValue
    }
  }

  val sc = new Scanner(System.in)
  val N = sc.nextInt
  val W = sc.nextInt
  val items = (for (i <- 1 to N) yield (sc.nextInt, sc.nextInt)).toArray

  val dp = new DP(N, W, items)
  
  println(dp.solver())

}
