def is_valid_brackets_order(program):
stack = []
bracket_pairs = {')': '(', '}': '{', ']': '['}
for char in program:
if char in '({[':
stack.append(char)
elif char in ')}]':
if not stack or stack[-1] != bracket_pairs[char]:
return False
stack.pop()
# The order is valid if the stack is empty at the end
return not stack
# Example usage:
program1 = "(x + y) - (a * b)"
program2 = "{[x + y] - (a * b)}"
program3 = "{[x + y) - (a * b]}" # Invalid order
print(is_valid_brackets_order(program1)) # True
print(is_valid_brackets_order(program2)) # True
print(is_valid_brackets_order(program3)) # False