N,W = list(map(int,input().split())) v = list(map(int,input().split())) w = list(map(int,input().split())) INF = 10**18 dp = [[-INF for _ in range(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 # とる if(j+w[i] <= W): dp[i+1][j+w[i]] = max(dp[i+1][j+w[i]], dp[i][j] + v[i]) # とらない dp[i+1][j] = max(dp[i+1][j], dp[i][j]) MAX = max(dp[-1]) can = [[False for _ in range(W+1)] for _ in range(N+1)] can[-1] = [True if dp[-1][i] == MAX else False for i in range(W+1)] for i in range(N,0,-1): for j in range(W+1): if(not can[i][j]):continue if(j-w[i-1] >= 0 and dp[i-1][j-w[i-1]] + v[i-1] == dp[i][j]): can[i-1][j-w[i-1]] = True if(dp[i-1][j] == dp[i][j]): can[i-1][j] = True assert can[0][0] now = 0 ans = [] for i in range(N): if(can[i+1][now]):continue assert now+w[i] <= W and can[i+1][now+w[i]] now += w[i] ans.append(i+1) print(len(ans)) print(*ans)