def sac(E,P,i,temp):
if temp[i][P]>0: return temp[i][P]
if i == 0: return 0
if E[i-1][0] > P:
temp[i][P] = sac(E , P , i-1 ,temp)
return temp[i][P]
else:
temp[i][P] = max( sac(E , P , i-1 , temp) , E[i-1][1] + sac(E , P - E[i-1][0] , i-1 , temp) )
return temp[i][P]
def initSac(E,P):
temp = [ [0] * (P+1) for i in range( len(E)+1 ) ]
return sac(E , P , len(E) , temp)