Examples
Input: ([(1, "downtown", 5), (2, "downtown", 3), (3, "downtown", 1), (4, "uptown", 4), (5, "uptown", 2)], "downtown", 6)
Expected Output: [1, 3]
Explanation: No single downtown property reaches 6. Both [1, 2] and [1, 3] use 2 properties, but [1, 3] has smaller total capacity: 6 instead of 8.
Input: ([(1, "downtown", 5), (2, "downtown", 3), (3, "downtown", 1), (4, "uptown", 4), (5, "uptown", 2)], "downtown", 3)
Expected Output: [2]
Explanation: Property 2 alone reaches the target, so 1 property is optimal.
Input: ([(1, "downtown", 5), (2, "downtown", 3), (3, "downtown", 1), (4, "uptown", 4), (5, "uptown", 2)], "downtown", 10)
Expected Output: []
Explanation: The total downtown capacity is only 9, so reaching 10 is impossible.
Input: ([(10, "midtown", 6), (11, "midtown", 3), (12, "midtown", 2)], "midtown", 5)
Expected Output: [10]
Explanation: Using one property is better than using two, even though [11, 12] hits the target exactly.
Input: ([(5, "alpha", 4), (1, "alpha", 4), (3, "alpha", 4), (9, "beta", 10)], "alpha", 8)
Expected Output: [1, 3]
Explanation: Any 2 alpha properties reach 8. They all have the same count and total capacity, so choose the lexicographically smallest ID list.
Input: ([(1, "north", 4), (2, "north", 7)], "north", 0)
Expected Output: []
Explanation: A non-positive group size is already satisfied by the empty subset.
Input: ([(1, "north", 4), (2, "north", 7)], "south", 3)
Expected Output: []
Explanation: No property belongs to the target neighborhood.