N, W = map(int, input().split()) A = list(map(int, input().split())) B = list(map(int, input().split())) INF = 1<<60 dp = [[-INF]*(W+1) for _ in range(N+1)] dp[0][0] = 0 for i in range(N): for j in range(W+1): if dp[i][j] == -INF: continue dp[i+1][j] = max(dp[i+1][j], dp[i][j]) if j+B[i] <= W: dp[i+1][j+B[i]] = max(dp[i+1][j+B[i]], dp[i][j]+A[i]) dp2 = [[False]*(W+1) for _ in range(N+1)] MAX = max(dp[-1]) for i in range(W+1): if dp[-1][i] == MAX: dp2[N][i] = True for i in reversed(range(N)): for j in range(W+1): if not dp2[i+1][j]: continue if dp[i+1][j] == dp[i][j]: dp2[i][j] = True if B[i] <= j and dp[i+1][j]-A[i] == dp[i][j-B[i]]: dp2[i][j-B[i]] = True now = 0 ans = [] for i in range(N): if not dp2[i+1][now]: ans.append(i+1) now += B[i] print(len(ans)) print(*ans)