You are selling lemonade at a stand. Each lemonade costs $5. Customers line up to buy one lemonade each, paying with a $5, $10, or $20 bill. You must give each customer the correct change immediately after they pay, using only the bills you have received from previous customers.
Write a function `lemonade_change(bills: list[int]) -> bool` that returns `True` if you can provide correct change to every customer in the order given by `bills`, and `False` otherwise.
You start with no cash on hand.
Constraints
1 <= len(bills) <= 10^5
Each element in bills is one of 5, 10, or 20.