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.

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)