code: def native_sparse_array_to_indices_values_and_shape(x):
      if x.layout == torch.sparse_coo:
          x = x.coalesce()
          return {"coo_indices": x.indices()}, x.values(), x.size()
      elif x.layout in [torch.sparse_csr, torch.sparse_bsr]:
          return (
              {
                  "crow_indices": x.crow_indices(),
                  "col_indices": x.col_indices(),
              },
              x.values(),
              x.size(),
          )
      elif x.layout in [torch.sparse_bsc, torch.sparse_csc]:
          return (
              {
                  "ccol_indices": x.crow_indices(),
                  "row_indices": x.col_indices(),
              },
              x.values(),
              x.size(),
          )
      raise ivy.utils.exceptions.IvyException(
          "not a sparse COO/CSR/CSC/BSC/BSR Tensor"
      )
  
imports: import ivy
  from ivy.functional.ivy.experimental.sparse_array import _verify_bsr_components, _verify_bsc_components, _verify_coo_components, _verify_csr_components, _verify_csc_components, _is_data_not_indices_values_and_shape
  import torch
label_desc: Use image node_id 3 for calling a global function with example usage: native_sparse_array_to_indices_values_and_shape(x) and returns: dict,  x,  x, dict,  x,  x, dict,  x,  x