Implement a simple food-ordering workflow. You are given classes Item, Menu, and Display, plus a function onUserUpdateSelected(itemId). Part 1: Each time the user adds an item (onUserUpdateSelected is called), update the cart and print a receipt via Display that lists items, subtotal, any discounts applied, and the final total. Implement appropriate toString methods for involved classes to support receipt printing. Part 2: Add a Combo class where each combo is defined as (k items -> discountAmount). After each item addition, select any valid set of combos that can be formed from the current cart (you do not need to maximize total discount or number of combos), apply the resulting discount(s), and print the updated receipt. Describe your data structures to track item counts and combos, provide pseudocode or code for onUserUpdateSelected, explain how you find any valid combo set (e.g., backtracking or another method that guarantees a valid set if one exists), and analyze time/space complexity.