code: def sort_and_partition(
      part: np.ndarray, boundaries: List[int]
  ) -> List[BlockInfo]:
      N = len(boundaries)
      offset = 0
      size = int(np.ceil(part.size / N))
      blocks = []
      for _ in range(N):
          blocks.append((offset, size))
          offset += size
      return blocks
  
imports: from typing import Callable, Iterable, List
  import numpy
  from ray.experimental.raysort.types import BlockInfo
label_desc: Use image node_id 2 for calling a global function with example usage: sort_and_partition(part, boundaries) and returns: blocks