def main(): N, W = map(int, input().split()) VALUES = list(map(int, input().split())) WEIGHTS = list(map(int, input().split())) dp = [[-1] * (W + 1) for _ in range(N + 1)] best_v = 0 dp[-1][0] = 0 for i in reversed(range(1, N + 1)): v = VALUES[i - 1] added_w = WEIGHTS[i - 1] for w in range(W + 1): if dp[i][w] != -1: dp[i - 1][w] = dp[i][w] for w in range(W + 1): new_w = w + added_w new_v = dp[i][w] + v if new_w <= W and dp[i - 1][new_w] <= new_v: dp[i - 1][new_w] = new_v best_v = max(best_v, new_v) path = [] for i in range(N + 1): if not best_v in dp[i]: best_v -= WEIGHTS[i - 1] path.append(i) if best_v == 0: break print(len(path)) print(*path) if __name__ == "__main__": main()