input: Write a python function to classify features as convex, non-convex, or neither using the given list of coordinates.
  assert classify_features([(1,0), (2,3), (3,1), (4,3)]) == "non-convex"
  assert classify_features([(0,0), (4,0), (4,3), (0,3)]) == "convex"
  assert classify_features([(0,0), (4,0), (2,2), (4,4), (0,4)]) == "neither convex nor non-convex"
  assert classify_features([(1,1), (2,2), (3,3), (4,4)]) == "convex"
  assert classify_features([(0,0), (1,2), (2,1), (2,2)]) == "neither convex nor non-convex"
output: def classify_features(coordinates):
      def cross_product(o, a, b):
          return (a[0] - o[0]) * (b[1] - o[1]) - (a[1] - o[1]) * (b[0] - o[0])
      
      n = len(coordinates)
      if n < 3:
          return "neither convex nor non-convex"
      
      cross_product_signs = []
      
      for i in range(n):
          o, a, b = coordinates[i], coordinates[(i + 1) % n], coordinates[(i + 2) % n]
          cross_product_value = cross_product(o, a, b)
          if cross_product_value != 0:
              cross_product_signs.append(cross_product_value > 0)
      
      if all(cross_product_signs) or not any(cross_product_signs):
          return "convex" if all(cross_product_signs) else "non-convex"
      
      return "neither convex nor non-convex"