#include using namespace std; const int N = 10010; int n, m, f[N][N]; int main() { // 文件输入 freopen("2_QiaHaoFill.in", "r", stdin); while (cin >> n >> m) { memset(f, -0x3f, sizeof(f)); // 其它位置全部初始化为-INF for (int i = 0; i < N; i++) f[i][0] = 0; // 第一列初始化为0 for (int i = 1; i <= n; i++) { int v, w; cin >> v >> w; for (int j = v; j <= m; j++) f[i][j] = max(f[i][j], f[i - 1][j - v] + w); } if (f[n][m] < 0) puts("-1"); else printf("%d\n", f[n][m]); } return 0; }