assert best_shopping_plan([], 1) == 0 # Alice cannot buy anything as there is no item in the store
assert best_shopping_plan([1], 1) == 1 # Alice can only buy that one item of price 1 given her budget amount
assert best_shopping_plan([1,2], 1) == 1 # Alice can only buy that one item of price 1 given her budget amount
assert best_shopping_plan([1,1,2], 2) == 2 # Alice can buy one item of price 2, or she can buy the two items of price 1
assert best_shopping_plan([1,2,3], 3) == 3 # Alice can buy one item of price 3, or she can buy the two items of price 1 and 2
assert best_shopping_plan([1,2,3,4], 10) == 7 # The best Alice can buy is for items of prices 3 and 4
assert best_shopping_plan([1,2,2,3,3,3], 10) == 6 # The best Alice can buy is for items of prices 3 and 3
assert best_shopping_plan([1,1,1,3,5,5], 7) == 6 # The best Alice can buy is for items of prices 1 and 5
Extracted text: Alice got a money ticket from her uncle that represent an actual amount in dollars. Her uncle brought alice to a toy store and gave her 3 instructions. • Alice can buy up to 2 items. • Alice cannot buy duplicate items. • A total amount of these items cannot exceed the given amount . Alice wants to spend as much as possible within the budget amount . Can you help her create a shopping plan according the rules above? For example, suppose the store carries 3 items: iPad $399, iPhone $199, MacBook $2000 and say Alice was given $600. She would buy an iPad and an iPhone which total is $598. However, if Alice was only given $400, then she would only get an iPad for $399 to maximize the spending. Your task is to write a function best_shopping_plan(prices:list[int], amount: int) -> int that returns the highest possible total amount that Alice can spend without exceeding the given budget amount . The input list prices represents prices of each item in the this store. Specifically, prices[i] is the price of item i. And yes, multiple items can have the same price. When the store has no items, prices can be empty. Constraints: len(prices) < 50 hint: check all possibilities. 50="" hint:="" check="" all=""> 50 hint: check all possibilities.>