#include <algorithm> #include <bits/stdc++.h> using namespace std; #define int long long const int inf = 1e18; signed main() { int n, m; cin >> n >> m; vector<int> dp(m + 1, -inf); dp[0] = 0; for (int i = 1, u, v; i <= n; i++) { cin >> v >> u; for (int j = v; j <= m; j++) dp[j] = max(dp[j], dp[j - v] + u); } cout << *max_element(dp.begin(), dp.end()) << endl << max(0ll, dp[m]) << endl; }