N, Z = map(int, input().split()) V = list(map(int, input().split())) W = list(map(int, input().split())) inf = 10**18 dp = [[-inf] * (Z+1) for _ in range(N+1)] dp[N][0] = 0 for i in range(N-1, -1, -1): v = V[i] w = W[i] for j in range(Z+1): if dp[i+1][j] == -inf: continue dp[i][j] = max(dp[i][j], dp[i+1][j]) if j+w <= Z: dp[i][j+w] = max(dp[i][j+w], dp[i+1][j] + v) for i in range(N+1): for j in range(1, Z+1): dp[i][j] = max(dp[i][j], dp[i][j-1]) ans = [] j = Z for i in range(N): if dp[i+1][j] == dp[i][j]: continue ans.append(i+1) j -= W[i] print(len(ans)) print(*ans)