def solve(): import sys input = sys.stdin.readline n, w = map(int, input().split()) u = list(map(int, input().split())) v = list(map(int, input().split())) GIRI = 1010000000 # C++の -giri と同じ値 # dp[i][j]: i番目以降を考えて重さjのときの最大価値 dp = [[-GIRI] * (w + 1) for _ in range(n + 1)] dp[n][0] = 0 for i in range(n - 1, -1, -1): for j in range(w + 1): # 使わない場合 if dp[i + 1][j] > dp[i][j]: dp[i][j] = dp[i + 1][j] # 使う場合 if j + v[i] <= w: val = dp[i + 1][j] + u[i] if val > dp[i][j + v[i]]: dp[i][j + v[i]] = val m = max(dp[0]) ans = [] 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) # C++では1-indexed x -= v[j] if now > ans: # 辞書順で比較 ans = now print(len(ans)) print(*ans) if __name__ == "__main__": solve()