N, W = (int(x) for x in input().split()) v=list(map(int, input().split())) w=list(map(int, input().split())) dp=[[-1]*(W+1) for i in range(N+1)] dp[0][0] = 0 for i in range(N): for j in range(W+1): if dp[i][j] != -1: dp[i+1][j] = max(dp[i+1][j], dp[i][j]) if j + w[i] < W+1: dp[i+1][j+w[i]] = max(dp[i+1][j+w[i]], dp[i][j] + v[i]) max_val = max(dp[-1]) visited = [[False]*(W+1) for i in range(N+1)] for i in range(W+1): if dp[-1][i] == max_val: visited[-1][i] = True for i in range(N): for j in range(W+1): if visited[-i-1][j]: if dp[-i-2][j] != -1: visited[-i-2][j] = True if 0 <= j-w[-i-1] < W+1 and dp[-i-2][j-w[-i-1]] != -1: visited[-i-2][j-w[-i-1]] = True ans=[] now = 0 now_j = 0 while True: p = now nj = 0 for i in range(now, N): if visited[i][now_j]: p = i nj = now_j + w[i] ans.append(p+1) now = p+1 now_j = nj if now == N or now_j == W: break print(len(ans)) print(*ans)