code: def _arrays_idx_n_dtypes(draw):
      num_dims = draw(
          st.shared(
              helpers.ints(min_value=1, max_value=4), key="num_dims"
          )
      )
      num_arrays = draw(
          st.shared(
              helpers.ints(min_value=2, max_value=4), key="num_arrays"
          )
      )
      common_shape = draw(
          helpers.list_of_size(
              x=helpers.ints(min_value=2, max_value=3),
              size=num_dims - 1,
          )
      )
      unique_idx = draw(
          helpers.ints(min_value=0, max_value=num_dims - 1)
      )
      unique_dims = draw(
          helpers.list_of_size(
              x=helpers.ints(min_value=2, max_value=3),
              size=num_arrays,
          )
      )
      xs = []
      input_dtypes = draw(
          helpers.array_dtypes(
              available_dtypes=draw(helpers.get_dtypes("float"))
          )
      )
      for ud, dt in zip(unique_dims, input_dtypes):
          x = draw(
              helpers.array_values(
                  shape=common_shape[:unique_idx]
                  + [ud]
                  + common_shape[unique_idx:],
                  dtype=dt,
              )
          )
          xs.append(x)
      return xs, input_dtypes, unique_idx
  
imports: import numpy
  from hypothesis import strategies, assume
  import ivy
  import ivy_tests.test_ivy.helpers
  from ivy_tests.test_ivy.helpers import handle_test
label_desc: Use image node_id 1 for calling a global function with example usage: _arrays_idx_n_dtypes(draw) and returns: xs,  input_dtypes,  unique_idx