code: def _associative_scan_helper(draw):
      input_dtype = draw(
          st.shared(
              st.sampled_from(draw(helpers.get_dtypes("float"))),
              key="shared_dtype",
          ).filter(lambda _x: "float16" not in _x)
      )
      random_size = draw(
          st.shared(
              helpers.ints(min_value=1, max_value=5), key="shared_size"
          )
      )
      shared_size = draw(
          st.shared(
              helpers.ints(min_value=1, max_value=5), key="shared_size"
          )
      )
      shape = (random_size, shared_size, shared_size)
      matrix = draw(
          helpers.array_values(
              dtype=input_dtype,
              shape=shape,
              min_value=1,
              max_value=10,
          )
      )
      axis = draw(
          helpers.get_axis(
              shape=shape,
              allow_neg=False,
              force_int=True,
          ).filter(lambda _x: _x < len(shape) - 2)
      )
      return [input_dtype], matrix, axis
  
imports: from hypothesis import strategies, assume
  import hypothesis.extra.numpy
  import numpy
  import ivy
  import ivy_tests.test_ivy.helpers
  from ivy_tests.test_ivy.helpers import handle_test, create_concatenable_arrays_dtypes
  from ivy.functional.ivy.experimental.manipulation import _check_bounds
  from ivy_tests.test_ivy.test_functional.test_core.test_manipulation import _get_splits
label_desc: Use image node_id 2 for calling a global function with example usage: _associative_scan_helper(draw) and returns: list,  matrix,  axis