from itertools import combinations

def anycomb(items):
    ' return combinations of any length from the items '
    return ( comb
             for r in range(1, len(items)+1)
             for comb in combinations(items, r)
             )

def totalvalue(comb):
    ' Totalise a particular combination of items'
    totwt = totval = 0
    for item, wt, val in comb:
        totwt  += wt
        totval += val
    return (totval, -totwt) if totwt <= 400 else (0, 0)

items = (
    (, 9, 150), (, 13, 35), (, 153, 200), (, 50, 160),
    (, 15, 60), (, 68, 45), (, 27, 60), (, 39, 40),
    (, 23, 30), (, 52, 10), (, 11, 70), (, 32, 30),
    (, 24, 15), (, 48, 10), (, 73, 40),
    (, 42, 70), (, 43, 75),
    (, 22, 80), (, 7, 20), (, 18, 12),
    (, 4, 50), (, 30, 10),
    )
bagged = max( anycomb(items), key=totalvalue) 
print( +
      '\n  '.join(sorted(item for item,_,_ in bagged)))
val, wt = totalvalue(bagged)
print(% (val, -wt))