docs: def _grouper(iterable, n, fillvalue=0):
          """Collect data into fixed-length chunks or blocks.
  
          Args:
              n (int): The size of the chunk.
              fillvalue (int): The fill value.
  
          Returns:
              iterator: An iterator over the chunks.
  
          """
          args = [iter(iterable)] * n
          return zip_longest(fillvalue=fillvalue, *args)