def 							lowerCAmelCase__    (       a__  ,			a__  ,			a__  ,			a__  ,			a__      )	->None:




  '''simple docstring'''

  if target == 0:
    answer.append(path.copy()      )
  else:
    for index in range(a__  ,			len(a__      )      ):
      if target >= candidates[index]:
        path.append(candidates[index]      )
        backtrack(a__  ,			a__  ,			a__  ,			target - candidates[index]  ,			a__      )
        path.pop(len(a__      ) - 1      )


def 							lowerCAmelCase__    (       a__  ,			a__      )	->list:




  '''simple docstring'''

  _UpperCamelCase				=  []  # type: list[int]
  _UpperCamelCase				=  []  # type: list[int]
  backtrack(a__  ,			a__  ,			a__  ,			a__  ,			0      )
  return answer


def 							lowerCAmelCase__    (       )	->None:




  '''simple docstring'''

  print(combination_sum([-8, 2.3, 0]  ,			1      )      )


if __name__ == "__main__":
   import doctest

   doctest.testmod()
   main()





from itertools import combinations, product


def 							lowerCAmelCase__    (       a__  ,			a__  ,			a__  ,			a__      )	->bool:




  '''simple docstring'''

  if xa == ya == 0 or xa == ya == 0:
    return False
  _UpperCamelCase				=  xa * xa + ya * ya
  _UpperCamelCase				=  xa * xa + ya * ya
  _UpperCamelCase				=  (xa - xa) * (xa - xa) + (ya - ya) * (ya - ya)
  return (
      a_square + b_square == c_square
      or a_square + c_square == b_square
      or b_square + c_square == a_square
  )


def 							lowerCAmelCase__    (       a__ = 50      )	->int:




  '''simple docstring'''

  return sum(
      1
      for pta, pta in combinations(product(range(limit + 1      )  ,			repeat=2      )  ,			2      )
      if is_right(*a__  ,			*a__      )      )


if __name__ == "__main__":
   print(F"{solution() = }")




