input: Write a python function to find the maximum value within a range that satisfies certain constraints.
  assert find_max_value(0, 16, [(lambda x: x <= 16), (lambda x: x % 2 == 0), (lambda x: x % 4 == 0)]) == 16
  assert find_max_value(0, 20, [(lambda x: x <= 20), (lambda x: x % 3 == 0)]) == 18
  assert find_max_value(0, 10, [(lambda x: x <= 10), (lambda x: x % 5 == 0)]) == 10
output: def find_max_value(start, end, constraints):
      def satisfies_constraints(x):
          return all(constraint(x) for constraint in constraints)
  
      for x in range(end, start - 1, -1):
          if satisfies_constraints(x):
              return x
      return None