import java.util.Scanner;
public class Main3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int total = scanner.nextInt();
int initVol = scanner.nextInt();
int[][] arr = new int[total + 1][2];
for (int i = 0; i < total; i++) {
arr[i + 1][0] = scanner.nextInt(); // 体积
arr[i + 1][1] = scanner.nextInt(); //价值
}
int[][] F = new int[total + 1][initVol + 1];
for (int i = 1; i < arr.length; i++) {
for (int j = 1; j <= initVol; j++) {
//体积小于当前容量
if (arr[i][0] <= j) {
F[i][j] = Math.max(
F[i-1][j],
F[i - 1][j - arr[i][0]] + arr[i][1]
);
}else{
F[i][j] = F[i-1][j];
}
}
}
System.out.println(F[F.length - 1][F[0].length - 1]);
print(F);
}
/*
4 4
1 1
1 2
3 2
1 4
*/
static void print(int[][] map) {
for (int[] ints : map) {
for (int i : ints) {
System.out.print(i + "\t");
}
System.out.println();
}
}
}