#include #include #include using namespace std; using ll = long long; using P = pair; void chmax(P& a, P b){a=max(a, b);} int main(void){ int n, W; cin >> n >> W; vector v(n), w(n); for(auto&x:v) cin >> x; for(auto&x:w) cin >> x; vector dp(n+1, vector

(W+1, P(-1e9, -1))); dp[n][0]=P(0, n+1); for(int i=n-1; i>=0; i--){ for(int j=0; j<=W; j++){ auto [p, id]=dp[i+1][j]; chmax(dp[i][j], dp[i+1][j]); if(j!=-1&&j+w[i]<=W){ chmax(dp[i][j+w[i]], P(p+v[i], i)); } } } int id=0, nw; P now(-1, -1); for(int i=0; i<=W; i++){ if(now ans; while(now.second=n) break; now=dp[id][nw]; } cout << ans.size() << endl; for(auto p:ans) cout << p << ' '; cout << endl; return 0; }