#include using namespace std; #define int long long #define vi vector #define vii vector #define ii pair #define fi first #define sc second #define pb push_back #define stoi stoll #define popcnt __builtin_popcount #define getbit(x, k) ((x >> k) & 1) #define all(x) (x).begin(),(x).end() #define FOR(i,j,k) for(int i=j; i<(int)k; ++i) #define look(a) cerr <<#a<<": "<> n >> m; int w[n+1],v[n+1]; FOR(i,1,n+1) cin >> w[i]; FOR(i,1,n+1) cin >> v[i]; int f[n+1][m+1]; FOR(i,0,n+1) FOR(j,0,m+1) f[i][j] = 0; FOR(i,1,n+1) FOR(j,1,m+1){ if (w[i] <= j) f[i][j] = max(f[i-1][j], f[i-1][j-w[i]] + v[i]); else f[i][j] = f[i-1][j]; } cout << f[n][m] << ' '; int i = n, j = m, t = 0; vi ans; while (i > 0 && j > 0) { if (f[i][j] != f[i-1][j]){ t++; ans.push_back(i); j -= w[i]; } --i; } cout << t << '\n'; for (int i = ans.size() - 1; i >= 0; --i) cout << ans[i] << ' '; } signed main() { cin.tie(0)->sync_with_stdio(0); freopen("in", "r", stdin); freopen("out", "w", stdout); int T = 1; cin >> T; while (T--) { solve(); cout << '\n'; } cerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n"; }