N,X=map(int,input().split()) V=list(map(int,input().split())) W=list(map(int,input().split())) dp=[(-10**9,0)]*(X+1) dp[0]=(0,0) for i in range(N): vi=V[i] wi=W[i] for j in range(X,-1,-1): if j+wi>X: continue if dp[j][0]<0: continue if dp[j+wi][0]<=dp[j][0]+vi: nc=dp[j][1]|(1<<(N-i-1)) if dp[j+wi][0]==dp[j][0]+vi: if (dp[j+wi][1]>nc): dp[j+wi]=(dp[j][0]+vi,nc) else: dp[j+wi]=(dp[j][0]+vi,nc) mv=0 for i in range(X+1): mv=max(mv,dp[i][0]) ans=-1 for i in range(X+1): if (mv==dp[i][0]): if ans==-1: ans=dp[i][1] else: ans=min(ans,dp[i][1]) L=[] for i in range(N): if ans&1: L.append(N-i) ans>>=1 print(len(L)) print(*reversed(L))