code: def partition_on_merged(
      cls,
      op,
      need_align,
      partition_merged_chunks,
      partition_indices_chunks,
      partition_info_chunks,
  ):
      # Stage 6: partition on each partitions
      return_value, return_indices = op.return_value, op.return_indices
      partitioned_chunks, partitioned_indices_chunks = [], []
      for i, partition_merged_chunk, partition_info_chunk in zip(
          itertools.count(),
          partition_merged_chunks,
          partition_info_chunks,
      ):
          partition_op = PartitionMerged(
              return_value=return_value,
              return_indices=return_indices,
              order=op.order,
              kind=op.kind,
              need_align=need_align,
              dtype=partition_merged_chunk.dtype,
              gpu=op.gpu,
          )
          chunk_inputs = []
          kws = []
          if return_value:
              chunk_inputs.append(partition_merged_chunk)
              kws.append(
                  {
                      "shape": partition_merged_chunk.shape,
                      "order": partition_merged_chunk.order,
                      "index": partition_merged_chunk.index,
                      "dtype": partition_merged_chunk.dtype,
                      "type": "partitioned",
                  }
              )
          if return_indices:
              if not return_value:
                  # value is required even it's not returned
                  chunk_inputs.append(partition_merged_chunk)
              chunk_inputs.append(partition_indices_chunks[i])
              kws.append(
                  {
                      "shape": partition_merged_chunk.shape,
                      "order": TensorOrder.C_ORDER,
                      "index": partition_merged_chunk.index,
                      "dtype": np.dtype(np.int64),
                      "type": "argpartition",
                  }
              )
          chunk_inputs.append(partition_info_chunk)
          partition_chunks = partition_op.new_chunks(
              chunk_inputs, kws=kws
          )
          if return_value:
              partitioned_chunks.append(partition_chunks[0])
          if return_indices:
              partitioned_indices_chunks.append(partition_chunks[-1])
  
      return partitioned_chunks, partitioned_indices_chunks
  
imports: import itertools
  import numpy
  from ...None import opcodes
  from ...core import recursive_tile
  from ...serialization.serializables import FieldTypes, KeyField, Int32Field, StringField, ListField, BoolField, AnyField
  from ...utils import has_unknown_shape, flatten, stack_back
  from ...core import ENTITY_TYPE, ExecutableTuple
  from ..operands import TensorOperand, TensorShuffleProxy
  from ..core import TENSOR_TYPE, TENSOR_CHUNK_TYPE, TensorOrder
  from ..array_utils import as_same_device, device
  from ..datasource import tensor
  from ..utils import validate_axis, validate_order
  from .psrs import TensorPSRSOperandMixin
label_desc: Use image node_id 2 for calling the ParallelPartitionMixin obj's underlying member method code with example usage: obj.partition_on_merged(cls, op, need_align, partition_merged_chunks, partition_indices_chunks, partition_info_chunks) and returns: partitioned_chunks,  partitioned_indices_chunks