#include <iostream> #include <vector> using namespace std; int main() { int n, V; cin >> n >> V; vector<int> w(n), v(n); for(int i = 0;i<n;i++) { cin >> w[i] >> v[i]; } vector<int> dp1(V+1,0); vector<int> dp2(V+1,-1e9); dp2[0] = 0; for(int i = 0;i<n;i++) { for(int j = w[i];j<=V;j++) { dp1[j] = max(dp1[j], dp1[j-w[i]]+v[i]); dp2[j] = max(dp2[j], dp2[j-w[i]]+v[i]); } } cout << dp1[V] << endl; cout << (dp2[V] < 0 ? 0:dp2[V]) <<endl; return 0; } // 64 位输出请用 printf("%lld")