def solve(): import sys data = sys.stdin.read().split() it = iter(data) n = int(next(it)) w = int(next(it)) u = [int(next(it)) for _ in range(n)] v = [int(next(it)) for _ in range(n)] GIRI = 1010000000 dp = [[-GIRI] * (w + 1) for _ in range(n + 1)] dp[n][0] = 0 for i in range(n - 1, -1, -1): dpi = dp[i] dpi1 = dp[i + 1] for j in range(w + 1): dpi[j] = max(dpi[j], dpi1[j]) nj = j + v[i] if nj <= w: val = dpi1[j] + u[i] if val > dpi[nj]: dpi[nj] = val m = max(dp[0]) ans = [] append = ans.append # ローカル化で高速化 for weight in range(w + 1): if dp[0][weight] != m: continue now = [] x = weight for j in range(n): if x >= v[j] and dp[j][x] != dp[j + 1][x]: now.append(j + 1) x -= v[j] if now > ans: ans = now sys.stdout.write(f"{len(ans)}\n") if ans: sys.stdout.write(" ".join(map(str, ans)) + "\n") if __name__ == "__main__": solve()