code: def put_along_axis_helper(draw):
      input_dtype, x, axis, shape = draw(
          helpers.dtype_values_axis(
              # does not work for bool yet because scatter_nd doesn't
              available_dtypes=helpers.get_dtypes("numeric"),
              min_num_dims=2,
              max_num_dims=3,
              min_dim_size=2,
              max_dim_size=5,
              min_value=-1e2,
              max_value=1e2,
              valid_axis=True,
              force_int_axis=True,
              ret_shape=True,
          )
      )
  
      idx_shape = list(shape)
      idx_shape[axis] = 1
  
      ind_dtype, indices = draw(
          helpers.dtype_and_values(
              available_dtypes=["int64"],
              shape=idx_shape,
              min_value=0,
              max_value=len(idx_shape) - 2,
          )
      )
  
      _, values = draw(
          helpers.dtype_and_values(
              available_dtypes=input_dtype,
              shape=idx_shape,
              min_value=0,
              max_value=100,
          )
      )
  
      return (
          input_dtype + ind_dtype + input_dtype,
          x[0],
          indices[0],
          values[0],
          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 16 for calling a global function with example usage: put_along_axis_helper(draw) and returns: unknown,  x,  indices,  values,  axis