First pass at knapsack without replacement