Ideally, we want to find all possible forms that could satisfy the function
The trick is eliminating efficiently