def sac(E,P):
temp = [ [0] * (P+1) for i in range( len(E)+1 )]
garde = [ [False] * (P+1) for i in range( len(E)+1) ]
for i in range(1,len(E)+1):
for p in range(P+1):
if E[i-1][0] > p:
temp[i][p] = temp[i-1][p]
else:
if E[i-1][1] + temp[i-1][p-E[i-1][0]] > temp[i-1][p]:
temp[i][p] = E[i-1][1] + temp[i-1][ p - E[i-1][0] ]
garde[i][p] = True
else:
temp[i][p] = temp[i-1][p]
p,L = P,[]
for i in range(len(E),0,-1):
if garde[i][p]:
L.append(i)
p -= E[i-1][0]
return temp[len(E)][P] , L