process.stdin.setEncoding("utf-8");

const VALUE = 0;
const WEIGHT = 1;

function knapsack(items, weight) {
  const memo = [];
  const list = [null, ...items];
  for (let i = 0; i < list.length; i++) {
    for (let w = 0; w <= weight; w++) {
      // 容量0のときはすべて0
      if (w === 0) {
        memo[i] = [0];
      } else if (i === 0) {
        memo[i][w] = 0;
      } else if (list[i][WEIGHT] > w) {
        memo[i][w] = memo[i - 1][w];
      } else {
        memo[i][w] = Math.max(
          memo[i - 1][w - list[i][WEIGHT]] + list[i][VALUE],
          memo[i - 1][w]
        );
      }
    }
  }
  return memo[items.length][weight];
}

const readline = require("readline");

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

const lines = [];

rl.on("line", line => lines.push(line));
rl.on("close", () => {
  // eslint-disable-next-line no-unused-vars
  const [[n, w], ...items] = lines.map(l =>
    l.split(" ").map(x => parseInt(x, 10))
  );
  // eslint-disable-next-line no-console
  console.log(knapsack(items, w));
});

